Jump to content

[1.12] [RESOLVED] Gui won't display properly


That_Martin_Guy

Recommended Posts

I have created a gui that will open when an item is right clicked. For some reason, however, the buttons, labels, text fields etc I give it don't work properly, and it doesn't even load the texture I give it. It also doesn't display any of these at all on my laptop, which has a lower resolution (I would estimate ~1400x900, but I'm just guessing).

 

In game preview

Edited by That_Martin_Guy
Fixed some links
Link to comment
Share on other sites

23 minutes ago, That_Martin_Guy said:

For some reason, however, the buttons, labels, text fields etc I give it don't work properly

See how vanilla does it at any of it's guis with buttons, like GuiIngameMenu. A couple of issues I can see:

 

question.drawTextBox();
answerA.drawTextBox();
answerB.drawTextBox();
answerC.drawTextBox();
answerD.drawTextBox();

In initGui? Drawing must happen each frame, not once the GUI is open and never again.

 

You are adding to your list but are never clearing it. Minecraft won't clear your lists for you, so every time the GUI is resized you will put "logical duplicates" into the list.

 

this.drawDefaultBackground();
this.mc.getTextureManager().bindTexture(BACKGROUND_TEXTURE);

You need to do something with the texture you are binding(hint: draw it). You can't just bind it and expect it to be drawn.

 

In your current call ordering everything you draw will be drawn over your buttons.

 

Your saveCard method shrinks the size of the item stack... on the client. You can't do that as the server still has different data. You need to use custom packets. After doing that it proceeds to create a new item, write a bunch of stuff into it's NBT and... discards it completely.

  • Like 1
Link to comment
Share on other sites

1 hour ago, V0idWa1k3r said:

See how vanilla does it at any of it's guis with buttons, like GuiIngameMenu

I did look immensely at vanilla code, mainly GuiScreenBook. If I didn't I would've been completely lost since there are few gui tutorials that I've found.

 

1 hour ago, V0idWa1k3r said:

Drawing must happen each frame, not once the GUI is open and never again.

Right. Their draw methods have been moved.

 

1 hour ago, V0idWa1k3r said:

You need to do something with the texture you are binding(hint: draw it). You can't just bind it and expect it to be drawn.

Added this underneath the bind:

this.drawTexturedModalRect((this.width - 256) / 2, 2, 0, 0, 256, 256);

. Actually displays in game now (great!). It's too small though, so I'll have to make it bigger somehow. I know enough photoshop to do this myself.

1 hour ago, V0idWa1k3r said:

In your current call ordering everything you draw will be drawn over your buttons.

Why? Just curious. In any game library I've worked with (not that many TBF) it draws the first thing drawn at the bottom, and the last thing drawn at the top.

1 hour ago, V0idWa1k3r said:

Your saveCard method shrinks the size of the item stack... on the client

Ah, didn't know that was a thing. I've worked with packets before, though, so this should be cake. If not I'll update here.

 

After all these changes, however, the display is still wonky. Preview (the language button turns up when I hover over the button above it).

 

EDIT: Also note that the text field should not show true as its text if the code works properly.

Edited by That_Martin_Guy
Link to comment
Share on other sites

18 minutes ago, That_Martin_Guy said:

Why? Just curious. In any game library I've worked with (not that many TBF) it draws the first thing drawn at the bottom, and the last thing drawn at the top.

MC works the same way, that is how rendering in 2d works. The thing is - you are drawing your buttons first. the super call in the drawScreen method is what draws the buttons.

 

18 minutes ago, That_Martin_Guy said:

the language button turns up when I hover over the button above it.

That happens because a GuiButton can only have a y size of 20 at most. I do not see where you are setting your button's size above 20 in your class though, have you changed that?

 

18 minutes ago, That_Martin_Guy said:

I did look immensely at vanilla code, mainly GuiScreenBook. If I didn't I would've been completely lost since there are few gui tutorials that I've found.

By that I ment to compare your button positioning with vanilla's. You are positioning your buttons based on the positioning of your text fields, and those are not really positioned all that well... they are positioned exactly in the way they are drawn. Some are positioned against the right boundry of the screen

answerB = new GuiTextField(9, this.fontRenderer, this.width - 50, 200, 200, 20);
answerD = new GuiTextField(11, this.fontRenderer, this.width - 50, this.height / 2 + 100, 200, 20);

 

Some are positioned agains left top corner of the screen

answerA = new GuiTextField(8, this.fontRenderer, 200, 200, 200, 20);

 

And this one is positioned agains the left x boundry and the middle of the screen

answerC = new GuiTextField(10, this.fontRenderer, 200, this.height / 2 + 100, 200, 20);

 

If you want the buttons to anchor to the middle of the screen position them agains it. The center is [width / 2, height / 2]. width and height here are scaled width and height of the screen. 

 

Edited by V0idWa1k3r
  • Like 1
Link to comment
Share on other sites

15 minutes ago, V0idWa1k3r said:

That happens because a GuiButton can only have a y size of 20 at most. I do not see where you are setting your button's size above 20 in your class though, have you changed that?

Yes, I really derped here. I wanted the answer buttons to be 50x50 squares instead of 200x20 rectangles until I realised that the buttons would then be taller than the text fields ¬¬. Currently they are 20x20 squares.

 

I updated the positioning on the buttons and text fields, but now it only shows the texture and a single text field! Preview

 

I know that my message is not registered, does nothing etc, but I'm very tired currently and need to go to sleep. Can therefore not work on it for the night.

Link to comment
Share on other sites

Your positioning is still of. Think about it - the coordinates you are giving to the text field/button are it's top left corner. If you say "Your position is at width / 2 - 200, height / 2 - 200 and your size is 200, 20" then you are going to see the box at [width / 2 - 200 => width / 2; height / 2 - 200 => height / 2 - 180]. When you are creating a text field at width / 2 + 200 it will go from that to width / 2 + 400. The one text field you are seing is most likely your question field, everything else is way up there or down there with their current y coordinates and some are way too offset to the right.

 

As your buttons take positions from your text fields the same is true for them.

  • Like 1
Link to comment
Share on other sites

So after a lot of number tweaking the buttons are finally aligned properly. The texture is too small still, but I can fix it myself.

 

Big problem however; I cannot type in any of the text fields. I see nothing in the GuiTextField class pointing at them being disabled, and I even tried manually enabling them with setEnabled, but to no avail.

 

New code is not really worth showing, since I literally did nothing but tweak positions of the elements.

 

EDIT: By "cannot type" I mean if I click on them it doesn't focus. However, even if I focus one text field with setFocused(true) it doesn't type anything at all.

Edited by That_Martin_Guy
Link to comment
Share on other sites

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



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • For example, is it possible to make it so that when you press the bone meal on the block, it changes to something else   Game Version 1.12.2
    • Yep, any other modpack worked… so maybe I should give up about this? 
    • Add crash-reports with sites like https://paste.ee/ and paste the link to it here   Make a test without Relics  
    • So launcher detect the next error: [02jun.2024 11:58:49.396] [main/ERROR] [mixin/]: Mixin config lolenderite.mixins.json does not specify "minVersion" property. Stoping the game to run normally, what should I do?   [02jun.2024 11:58:41.058] [main/INFO] [cpw.mods.modlauncher.Launcher/MODLAUNCHER]: ModLauncher running: args [--username, maaaarcoss, --version, 1.20.1-forge-47.2.30, --gameDir, C:\Users\marco\AppData\Roaming\.minecraft, --assetsDir, C:\Users\marco\AppData\Roaming\.minecraft\assets, --assetIndex, 5, --uuid, a9e19e1b4966318486d84346db748b2d, --accessToken, ????????, --clientId, 0, --xuid, 0, --userType, msa, --versionType, release, --launchTarget, forgeclient, --fml.forgeVersion, 47.2.30, --fml.mcVersion, 1.20.1, --fml.forgeGroup, net.minecraftforge, --fml.mcpVersion, 20230612.114412] [02jun.2024 11:58:41.058] [main/INFO] [cpw.mods.modlauncher.Launcher/MODLAUNCHER]: ModLauncher 10.0.9+10.0.9+main.dcd20f30 starting: java version 17.0.8 by Microsoft; OS Windows 11 arch amd64 version 10.0 [02jun.2024 11:58:43.251] [main/INFO] [net.minecraftforge.fml.loading.ImmediateWindowHandler/]: Loading ImmediateWindowProvider fmlearlywindow [02jun.2024 11:58:43.473] [main/INFO] [EARLYDISPLAY/]: Trying GL version 4.6 [02jun.2024 11:58:43.969] [main/INFO] [EARLYDISPLAY/]: Requested GL version 4.6 got version 4.6 [02jun.2024 11:58:44.163] [main/INFO] [optifine.OptiFineTransformationService/]: OptiFineTransformationService.onLoad [02jun.2024 11:58:44.165] [main/INFO] [optifine.OptiFineTransformationService/]: OptiFine ZIP file URL: union:/C:/Users/marco/AppData/Roaming/.minecraft/mods/OptiFine_1.20.1_HD_U_I6.jar%23268!/ [02jun.2024 11:58:44.171] [main/INFO] [optifine.OptiFineTransformationService/]: OptiFine ZIP file: C:\Users\marco\AppData\Roaming\.minecraft\mods\OptiFine_1.20.1_HD_U_I6.jar [02jun.2024 11:58:44.174] [main/INFO] [optifine.OptiFineTransformer/]: Target.PRE_CLASS is available [02jun.2024 11:58:44.246] [main/INFO] [mixin/]: SpongePowered MIXIN Subsystem Version=0.8.5 Source=union:/C:/Users/marco/AppData/Roaming/.minecraft/libraries/org/spongepowered/mixin/0.8.5/mixin-0.8.5.jar%23100!/ Service=ModLauncher Env=CLIENT [02jun.2024 11:58:44.255] [main/INFO] [optifine.OptiFineTransformationService/]: OptiFineTransformationService.initialize [02jun.2024 11:58:44.281] [pool-4-thread-1/INFO] [EARLYDISPLAY/]: GL info: Intel(R) Iris(R) Xe Graphics GL version 4.6.0 - Build 31.0.101.5522, Intel [02jun.2024 11:58:45.120] [main/WARN] [net.minecraftforge.fml.loading.moddiscovery.ModFileParser/LOADING]: Mod file C:\Users\marco\AppData\Roaming\.minecraft\libraries\net\minecraftforge\fmlcore\1.20.1-47.2.30\fmlcore-1.20.1-47.2.30.jar is missing mods.toml file [02jun.2024 11:58:45.238] [main/WARN] [net.minecraftforge.fml.loading.moddiscovery.ModFileParser/LOADING]: Mod file C:\Users\marco\AppData\Roaming\.minecraft\libraries\net\minecraftforge\javafmllanguage\1.20.1-47.2.30\javafmllanguage-1.20.1-47.2.30.jar is missing mods.toml file [02jun.2024 11:58:45.314] [main/WARN] [net.minecraftforge.fml.loading.moddiscovery.ModFileParser/LOADING]: Mod file C:\Users\marco\AppData\Roaming\.minecraft\libraries\net\minecraftforge\lowcodelanguage\1.20.1-47.2.30\lowcodelanguage-1.20.1-47.2.30.jar is missing mods.toml file [02jun.2024 11:58:45.387] [main/WARN] [net.minecraftforge.fml.loading.moddiscovery.ModFileParser/LOADING]: Mod file C:\Users\marco\AppData\Roaming\.minecraft\libraries\net\minecraftforge\mclanguage\1.20.1-47.2.30\mclanguage-1.20.1-47.2.30.jar is missing mods.toml file [02jun.2024 11:58:45.869] [main/WARN] [net.minecraftforge.jarjar.selection.JarSelector/]: Attempted to select two dependency jars from JarJar which have the same identification: Mod File:  and Mod File: . Using Mod File:  [02jun.2024 11:58:45.871] [main/WARN] [net.minecraftforge.jarjar.selection.JarSelector/]: Attempted to select a dependency jar for JarJar which was passed in as source: apexcore. Using Mod File: C:\Users\marco\AppData\Roaming\.minecraft\mods\apexcore-1.20.1-10.0.0.jar [02jun.2024 11:58:45.871] [main/WARN] [net.minecraftforge.jarjar.selection.JarSelector/]: Attempted to select a dependency jar for JarJar which was passed in as source: expandability. Using Mod File: C:\Users\marco\AppData\Roaming\.minecraft\mods\expandability-9.0.0.jar [02jun.2024 11:58:45.872] [main/INFO] [net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator/]: Found 17 dependencies adding them to mods collection [02jun.2024 11:58:46.452] [main/INFO] [optifine.OptiFineTransformationService/]: OptiFineTransformationService.transformers [02jun.2024 11:58:46.457] [main/INFO] [optifine.OptiFineTransformer/]: Targets: 412 [02jun.2024 11:58:47.036] [main/INFO] [optifine.OptiFineTransformationService/]: additionalClassesLocator: [optifine., net.optifine.] [02jun.2024 11:58:49.345] [main/INFO] [mixin/]: Compatibility level set to JAVA_17 [02jun.2024 11:58:49.396] [main/ERROR] [mixin/]: Mixin config lolenderite.mixins.json does not specify "minVersion" property [02jun.2024 11:58:49.728] [main/INFO] [cpw.mods.modlauncher.LaunchServiceHandler/MODLAUNCHER]: Launching target 'forgeclient' with arguments [--version, 1.20.1-forge-47.2.30, --gameDir, C:\Users\marco\AppData\Roaming\.minecraft, --assetsDir, C:\Users\marco\AppData\Roaming\.minecraft\assets, --uuid, a9e19e1b4966318486d84346db748b2d, --username, maaaarcoss, --assetIndex, 5, --accessToken, ????????, --clientId, 0, --xuid, 0, --userType, msa, --versionType, release] [02jun.2024 11:58:49.783] [main/WARN] [mixin/]: Reference map 'handcrafted-forge-1.20.1-forge-refmap.json' for handcrafted.mixins.json could not be read. If this is a development environment you can ignore this message [02jun.2024 11:58:49.797] [main/WARN] [mixin/]: Reference map 'letsdo-brewery-forge-forge-refmap.json' for brewery.mixins.json could not be read. If this is a development environment you can ignore this message [02jun.2024 11:58:49.813] [main/WARN] [mixin/]: Reference map 'smallships-forge-refmap.json' for smallships.mixins.json could not be read. If this is a development environment you can ignore this message [02jun.2024 11:58:49.824] [main/WARN] [mixin/]: Reference map 'octolib.refmap.json' for octolib.mixins.json could not be read. If this is a development environment you can ignore this message [02jun.2024 11:58:49.831] [main/WARN] [mixin/]: Reference map 'graveyard-FORGE-forge-refmap.json' for graveyard-forge.mixins.json could not be read. If this is a development environment you can ignore this message [02jun.2024 11:58:49.943] [main/WARN] [mixin/]: Reference map 'coroutil.refmap.json' for coroutil.mixins.json could not be read. If this is a development environment you can ignore this message [02jun.2024 11:58:49.948] [main/WARN] [mixin/]: Reference map 'apexcore.refmap.json' for apexcore.mixins.json could not be read. If this is a development environment you can ignore this message [02jun.2024 11:58:49.953] [main/WARN] [mixin/]: Reference map 'chiselsandbits.refmap.json' for chisels-and-bits.mixins.json could not be read. If this is a development environment you can ignore this message [02jun.2024 11:58:50.487] [main/WARN] [mixin/]: Error loading class: dev/latvian/mods/kubejs/recipe/RecipesEventJS (java.lang.ClassNotFoundException: dev.latvian.mods.kubejs.recipe.RecipesEventJS) [02jun.2024 11:58:50.487] [main/WARN] [mixin/]: @Mixin target dev.latvian.mods.kubejs.recipe.RecipesEventJS was not found mixins.hammerlib.json:bs.kubejs.RecipeEventJSMixin [02jun.2024 11:58:51.074] [main/WARN] [mixin/]: Error loading class: sereneseasons/handler/season/RandomUpdateHandler (java.lang.ClassNotFoundException: sereneseasons.handler.season.RandomUpdateHandler) [02jun.2024 11:58:51.074] [main/WARN] [mixin/]: @Mixin target sereneseasons.handler.season.RandomUpdateHandler was not found snowrealmagic.mixins.json:sereneseasons.RandomUpdateHandlerMixin [02jun.2024 11:58:51.084] [main/WARN] [mixin/]: Error loading class: me/jellysquid/mods/sodium/client/render/chunk/compile/pipeline/BlockRenderer (java.lang.ClassNotFoundException: me.jellysquid.mods.sodium.client.render.chunk.compile.pipeline.BlockRenderer) [02jun.2024 11:58:51.084] [main/WARN] [mixin/]: @Mixin target me.jellysquid.mods.sodium.client.render.chunk.compile.pipeline.BlockRenderer was not found snowrealmagic.mixins.json:sodium.BlockRendererAccess [02jun.2024 11:58:51.086] [main/WARN] [mixin/]: Error loading class: me/jellysquid/mods/sodium/client/render/chunk/compile/pipeline/BlockRenderer (java.lang.ClassNotFoundException: me.jellysquid.mods.sodium.client.render.chunk.compile.pipeline.BlockRenderer) [02jun.2024 11:58:51.086] [main/WARN] [mixin/]: @Mixin target me.jellysquid.mods.sodium.client.render.chunk.compile.pipeline.BlockRenderer was not found snowrealmagic.mixins.json:sodium.BlockRendererMixin [02jun.2024 11:58:51.292] [main/WARN] [mixin/]: Error loading class: me/jellysquid/mods/sodium/client/render/chunk/compile/pipeline/FluidRenderer (java.lang.ClassNotFoundException: me.jellysquid.mods.sodium.client.render.chunk.compile.pipeline.FluidRenderer) [02jun.2024 11:58:51.441] [main/WARN] [mixin/]: Error loading class: net/raphimc/immediatelyfast/feature/map_atlas_generation/MapAtlasTexture (java.lang.ClassNotFoundException: net.raphimc.immediatelyfast.feature.map_atlas_generation.MapAtlasTexture) [02jun.2024 11:58:51.481] [main/WARN] [mixin/]: Error loading class: jeresources/api/util/LootConditionHelper (java.lang.ClassNotFoundException: jeresources.api.util.LootConditionHelper) [02jun.2024 11:58:51.481] [main/WARN] [mixin/]: @Mixin target jeresources.api.util.LootConditionHelper was not found mixins.improvableskills.json:jer.LootConditionHelperMixin [02jun.2024 11:58:51.902] [main/WARN] [mixin/]: Error loading class: twilightforest/TFMagicMapData$TFMapDecoration (java.lang.ClassNotFoundException: twilightforest.TFMagicMapData$TFMapDecoration) [02jun.2024 11:58:52.327] [main/WARN] [mixin/]: Error loading class: me/cominixo/betterf3/modules/TargetModule (java.lang.ClassNotFoundException: me.cominixo.betterf3.modules.TargetModule) [02jun.2024 11:58:52.328] [main/WARN] [mixin/]: @Mixin target me.cominixo.betterf3.modules.TargetModule was not found securitycraft.mixins.json:f3.BetterF3TargetModuleMixin [02jun.2024 11:58:53.160] [main/INFO] [MixinExtras|Service/]: Initializing MixinExtras via com.llamalad7.mixinextras.service.MixinExtrasServiceImpl(version=0.3.5). [02jun.2024 11:58:53.287] [main/WARN] [mixin/]: Injection warning: LVT in net/minecraft/client/gui/GuiGraphics::m_280497_(Lnet/minecraft/client/gui/Font;Ljava/util/List;IILnet/minecraft/client/gui/screens/inventory/tooltip/ClientTooltipPositioner;)V has incompatible changes at opcode 346 in callback relics.mixins.json:GuiGraphicsMixin->@Inject::onTooltipRender(Lnet/minecraft/client/gui/Font;Ljava/util/List;IILnet/minecraft/client/gui/screens/inventory/tooltip/ClientTooltipPositioner;Lorg/spongepowered/asm/mixin/injection/callback/CallbackInfo;Lnet/minecraftforge/client/event/RenderTooltipEvent$Pre;IIIILorg/joml/Vector2ic;)V.  Expected: [Lnet/minecraftforge/client/event/RenderTooltipEvent$Pre;, I, I, I, I, Lorg/joml/Vector2ic;]     Found: [Ljava/lang/Object;, I, I, I, I, Lorg/joml/Vector2ic;] Available: [Ljava/lang/Object;, I, I, I, I, Lorg/joml/Vector2ic;, I, I, I, Lnet/minecraft/client/gui/Font;, I, I, Lnet/minecraft/client/gui/screens/inventory/tooltip/ClientTooltipComponent;]
    • I have tried what you have said and it has worked, thank you for your help!
  • Topics

×
×
  • Create New...

Important Information

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