Jump to content

Recommended Posts

Posted

I have a class called ArrowCount which creates a string of text to render on the screen. It renders fine, but when I try to reposition it, the text moves when changing the gui size in the Minecraft settings.

 

Here's my class:

public class ArrowCount {
    private static Minecraft mc = Minecraft.getMinecraft();
    public static int arrowCount = 20;

    public static void renderToHud() {
        if((mc.inGameHasFocus) || (mc.currentScreen != null) && (mc.currentScreen instanceof GuiChat) && !mc.gameSettings.showDebugInfo) {
            ScaledResolution res = new ScaledResolution(mc, mc.displayWidth, mc.displayHeight);
            FontRenderer fontRender = mc.fontRendererObj;
            int width = res.getScaledWidth();
            int height = res.getScaledHeight();
            int arrows = arrowCount;

            String arrowCount = "Arrows: " + arrows;
            int x = width / 2;
            int y = (height / 2) + 82;
            int color = 0xffffff;
            mc.fontRendererObj.drawStringWithShadow(arrowCount, x, y, color);
        }
    }
}

 

I thought about this, and I'm pretty sure that because in the integer y, when I added 82, it always displays it in the same spot because 82 is static and will not change.

 

Does anyone know how I can have the text in the same spot no matter what size the gui is?

 

Thanks

Posted

Few things 1st:

 

1. Event gives you resolution, use that, m8.

@SubscribeEvent
public void onRenderOvelay(RenderGameOverlayEvent.Pre event)
{
	int w = event.resolution.getScaledWidth();
	int h = event.resolution.getScaledHeight();

 

2.

private static Minecraft mc = Minecraft.getMinecraft();

I don't think it can be static, Minecraft.class needs to be initialized (it's null on startup), so does your object (ArrowCount), after Minecraft.

But I might be wrong.

 

3.

int x = width / 2;
int y = (height / 2) + 82;

 

This will cause your arrow count to ALWAYS render with 82 offset from exact center - the 82 value is dependent to gui size - thus with different gui size it will be different offset.

 

Use e.g:

int x = width / 2;
int y = height - 50;

 

1.7.10 is no longer supported by forge, you are on your own.

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

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

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