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 guys,

 

I have a problem with rendering a GUI and I've exhausted all debugging options I can think of, so i thought someone here might have an idea.

 

The problem is that I'm trying to render a dynamically sized tank, but Minecraft isn't displaying anything (not even the super simple drawRect rectangle).

 

This is the relevant code:

 

   

@Override
    public void render(Minecraft minecraft, int offsetX, int offsetY, int mouseX, int mouseY) {
        //Gray Background
        drawRect(offsetX + x, offsetY + y, offsetX + x + width, offsetY + y + height, Colors.DARK_GRAY);

        //Fluid Level
        if(fluid != null) {

        }

        minecraft.getTextureManager().bindTexture(Textures.Gui.MACHINE_ELEMENTS);

        //Foreground
        //right side
        int xStart = width - 3;
        int newHeight = height - 2;
        for(int i = 0; i < newHeight / 2; i++) {
            drawTexturedModalRect(offsetX + x + xStart, offsetY + y + 1 + (newHeight % 2) + (i * 2), 1, 7, 3, 2);
        }
        //top border
        xStart = width - 4;
        drawTexturedModalRect(offsetX + x + xStart, offsetY + y, 0, 6, 4, 1);
        for(int i = 0; i < xStart; i++) {
            drawTexturedModalRect(offsetX + x + i, offsetY + y, 0, 6, 1, 1);
        }
        //bottom border
        drawTexturedModalRect(offsetX + x, offsetY + y + height - 1, 0, 9, 4, 1);
        for(int i = 4; i < xStart + 4; i++) {
            drawTexturedModalRect(offsetX + x + i, offsetY + y + height - 1, 1, 9, 1, 1);
        }
        //left border
        if(newHeight % 2 != 0) drawTexturedModalRect(offsetX + x, offsetY + y + 1, 0, 7, 1, 1);
        for(int i = 0; i < newHeight / 2; i++) {
            drawTexturedModalRect(offsetX + x, offsetY + y + 1 + (newHeight % 2) + (i * 2), 0, 7, 1, 2);
        }
    }

 

You can find the full project here: https://github.com/Todkommt/Mass-Effect-Ships-Mod

And this is the only usage of this class (GuiComponentFluidGauge.java): GuiDeuteriumExtractor.java

Theres also this extremely similar component that works perfectly fine: GuiComponentEnergyGauge.java

 

Some extra debug info:

The coordinates are translated to the space of a root object (so x = 63 means 63 from the top left corner of the gui screen, not the minecraft window)

 

offsetX = 0

offsetY = 0

x = 63

y = 8

width = 14

height = 42

Colors.DARK_GRAY = 0x8B8B8B

zLevel = 0

 

Any help would be greatly appreciated =)

Is this simply a GuiScreen or, a GuiContainer?

I am not a cat. I know my profile picture is sexy and amazing beyond anything you could imagine but my cat like features only persist in my fierce eyes. I might be a cat.

  • Author

Is this simply a GuiScreen or, a GuiContainer?

 

It's an OpenModsLib BaseComponent (which extends Gui). It's being called from a GuiContainer.

Is the render method being called?

I. Stellarium for Minecraft: Configurable Universe for Minecraft! (WIP)

II. Stellar Sky, Better Star Rendering&Sky Utility mod, had separated from Stellarium.

  • Author

Is the render method being called?

 

Yes, the variable values I posted in the OP are taken from a breakpoint at the drawRect call.

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.