Hey there guys!
So, I want to make text appear where the user chose it to appear. I'm currently saving the x and y coordinates in a config, as well as the original resolution they were set on (For example, the user sets the x/y to 200,300 and his resolution is 1920x1080). This works if the user has Minecraft at the resolution that was set in the config (in this case, from the example, 1920x1080). But, if I try to open Minecraft on a different resolution (either making it fullscreen or moving it to another screen and fulscreen'ing), coordinates change. Target resolution is 2560x1440
So I tried to do basic math:
(Will take from example)
For the x coordinate: 2560/? = 1920/200 (Target resolution (Width)/Target x coordinate = Original resolution (Width) /Original x coordinate)
For the y coordinate: 1440/? = 1080/300 (Target resolution (Height)/Target y coordinate = Original resolution (Height) /Original y coordinate)
Using this:
int targetResWidth = Minecraft.getMinecraft().displayWidth;
int targetResHeight = Minecraft.getMinecraft().displayHeight;
int xPos = targetResWidth * ConfigProperties.healthX / ConfigProperties.scaledX;
int yPos = targetResHeight * ConfigProperties.healthY / ConfigProperties.scaledY;
healthX/Y are the original coords;
xPos/yPos are the target coords;
targetResWidth/Height is the target resolution (width x height);
scaledX/y is the original resolution (width x height).
The x coordinate of the text is 120.
When it changes resolution, it becomes 359 with my formula, but the text is not where it should be.
The text is "20.0 Health Points", the correct position is above the health bar.
The first picture is a windowed mode resolution, the second picture is 2560x1440 (I think it's 4K).
Important: Both images are in "Normal" Gui scale.
Is there a way to get the text to show above the health bar (so a position that's nearly the same as the original one)? If yes, how?
You can find the source code of the project at https://github.com/RoccoDev/HealthPlus (File's named "GuiHealth.java")
Thanks in advance.