Posted June 24, 20205 yr Hi, I am trying to draw a gui with buttons over another screen always when player open a Screen that is instance of Container. It is working very well except the background texture. I tryed to use Forge's events like: RenderGameOverlayEvent.Post / Pre GuiScreenEvent.DrawScreenEvent.Post / Pre GuiScreenEvent.DrawScreenEvent.BackgroundDrawnEvent When I open my own custom gui, it works (the little gui at the top of screen is the GUI that I am talking about, drawned by forge events described above): https://paste.pics/e0840bd62f40d65c805edc31474ec2c8 But, if I open player inventory or crafting table or chest containers, this is what happens to my overlay gui (grayed out) https://paste.pics/65c5c355f7597296d13def7459c715c0 I tried to enable/disable GL11 lighting, blend, etc... but I am not good with grapichs parts... This is my current "working" code: @SubscribeEvent public static void onScreenRender(RenderGameOverlayEvent.Post event) { if (event.getType() == RenderGameOverlayEvent.ElementType.EXPERIENCE) { if (mc.currentScreen instanceof ContainerScreen<?> && !(mc.currentScreen instanceof CreativeScreen)) { GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); RenderHelper.disableStandardItemLighting(); mc.getTextureManager().bindTexture(SEARCH_GUI); // SEARCH_GUI is a ResourceLocation mc.currentScreen.blit(guiLeft, guiTop, 0, 0, xSize, ySize); } } } Can anyone help me about this? Thank you! Edited June 24, 20205 yr by GnRSlashSP Issue solved †GnR† Slash can one man truly make a difference?
June 24, 20205 yr Try either GuiContainerEvent since it renders the screen after Screen#renderBackground is called.
June 24, 20205 yr Author 1 hour ago, ChampionAsh5357 said: Try either GuiContainerEvent since it renders the screen after Screen#renderBackground is called. It is working! Of course, using this event solved my issue with drawing color but cause me issues with coordinates. Before using GuiContainerEvent: double mouseX = mc.mouseHelper.getMouseX() * (double)mc.mainWindow.getScaledWidth() / (double)mc.mainWindow.getWidth(); double mouseY = mc.mouseHelper.getMouseY() * (double)mc.mainWindow.getScaledHeight() / (double)mc.mainWindow.getHeight(); mc.fontRenderer.drawString(Resources.getMsg("item"), searchBar.x - 3 - mc.fontRenderer.getStringWidth(Resources.getMsg("item")), searchBar.y, 0x606060); mc.fontRenderer.drawString(Resources.getMsg("qty"), qtyBar.x - 3 - mc.fontRenderer.getStringWidth(Resources.getMsg("qty")), qtyBar.y, 0x606060); After using GuiContainerEvent: double mouseX = mc.mouseHelper.getMouseX() * (double)mc.mainWindow.getScaledWidth() / (double)mc.mainWindow.getWidth(); double mouseY = mc.mouseHelper.getMouseY() * (double)mc.mainWindow.getScaledHeight() / (double)mc.mainWindow.getHeight(); double newY = -(mc.mainWindow.getScaledHeight() - ((ContainerScreen) mc.currentScreen).getYSize())/2; double newX = -(mc.mainWindow.getScaledWidth() - ((ContainerScreen) mc.currentScreen).getXSize())/2; GlStateManager.translated(newX, newY, 1d); mc.fontRenderer.drawString(Resources.getMsg("item"), searchBar.x - 3 - mc.fontRenderer.getStringWidth(Resources.getMsg("item")), searchBar.y, 0x606060); mc.fontRenderer.drawString(Resources.getMsg("qty"), qtyBar.x - 3 - mc.fontRenderer.getStringWidth(Resources.getMsg("qty")), qtyBar.y, 0x606060); Another thing, after all code inside this event, I need to use this again: GlStateManager.translated(-newX, -newY, 1d); Without this, when I click a slot to drag itemstack, the item appear at wrong locations at screen lol Thank you! †GnR† Slash can one man truly make a difference?
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.