Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

Posted

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 by GnRSlashSP
Issue solved

†GnR† Slash

can one man truly make a difference?

  • 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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

Important Information

By using this site, you agree to our Terms of Use.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.