Posted April 2, 20169 yr I am having an issue where the buttons in my GUI are always selected, and I can't click them. I want the buttons to be able to change the background of the GUI, and the GUI class can be found here: https://github.com/TheXnator/ComputerMod1.8.9/blob/master/GuiLaptop.java I have been looking through the code and changing things for hours but I can't find anything that could be the problem.
April 2, 20169 yr Not sure exactly what you mean by "constantly selected" but you will want to check your button ids they are both 0 and you need to call the super method in drawScreen (use just have it commented out) - Wurmatron
April 2, 20169 yr Author When I add the super.drawScreen, I get the following error when it tries to draw the GUI: [Client thread/FATAL]: Reported exception thrown! net.minecraft.util.ReportedException: Rendering screen at net.minecraft.client.renderer.EntityRenderer.updateCameraAndRender(EntityRenderer.java:1183) ~[EntityRenderer.class:?] at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1107) ~[Minecraft.class:?] at net.minecraft.client.Minecraft.run(Minecraft.java:380) [Minecraft.class:?] at net.minecraft.client.main.Main.main(Main.java:116) [Main.class:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_72] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_72] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_72] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_72] at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?] at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_72] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_72] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_72] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_72] at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source) [start/:?] at GradleStart.main(Unknown Source) [start/:?] Caused by: java.lang.NullPointerException at net.minecraft.client.gui.GuiScreen.drawScreen(GuiScreen.java:86) ~[GuiScreen.class:?] at thexnator.computermod.gui.GuiLaptop.drawScreen(GuiLaptop.java:182) ~[GuiLaptop.class:?] at net.minecraftforge.client.ForgeHooksClient.drawScreen(ForgeHooksClient.java:310) ~[ForgeHooksClient.class:?] at net.minecraft.client.renderer.EntityRenderer.updateCameraAndRender(EntityRenderer.java:1156) ~[EntityRenderer.class:?] ... 15 more
April 2, 20169 yr initGui(); should automatically be called. How my gui class is setup https://github.com/Wurmatron/VoidRPG/blob/master/src/main/java/wurmatron/voidrpg/client/gui/GuiArmorCustomization.java - Wurmatron
April 2, 20169 yr Author The problem with the buttons is that they are there and all but they constantly render as though they have a mouse over them, with the light blue overlay, and when I click where they are rendering, it does nothing. Everything else in the DrawScreen method seems to work fine without the super.drawScreen and the super.initGui in the initGui method also crashes the game
April 2, 20169 yr I have never had that issue but it may be because you are forcing the buttons to render and skipping initGui() [/size][/font][/color] [color=#333333][font=consolas, liberation mono, menlo, courier, monospace][size=12px]nextWallpaper.drawButton(mc, posX + 7, posY + 10); [/size][/font][/color] [color=#333333][font=consolas, liberation mono, menlo, courier, monospace][size=12px]prevWallpaper.drawButton(mc, posX - 3, posY + 10);[/size][/font][/color] [color=#333333][font=consolas, liberation mono, menlo, courier, monospace][size=12px][/Code][/size][/font][/color] - Wurmatron
April 2, 20169 yr Author Could I not have the super.initGui in the initGui method but replace the drawbutton with calling the initGui mehod in the drawScreen method. After creating a new world, the super.initGui no longer crashes the game but without the drawButton it doesn't draw the buttons at all
April 2, 20169 yr Author When I add the super.drawScreen, I get the following error when it tries to draw the GUI: [Client thread/FATAL]: Reported exception thrown! net.minecraft.util.ReportedException: Rendering screen at net.minecraft.client.renderer.EntityRenderer.updateCameraAndRender(EntityRenderer.java:1183) ~[EntityRenderer.class:?] at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1107) ~[Minecraft.class:?] at net.minecraft.client.Minecraft.run(Minecraft.java:380) [Minecraft.class:?] at net.minecraft.client.main.Main.main(Main.java:116) [Main.class:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_72] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_72] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_72] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_72] at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?] at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_72] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_72] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_72] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_72] at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source) [start/:?] at GradleStart.main(Unknown Source) [start/:?] Caused by: java.lang.NullPointerException at net.minecraft.client.gui.GuiScreen.drawScreen(GuiScreen.java:86) ~[GuiScreen.class:?] at thexnator.computermod.gui.GuiLaptop.drawScreen(GuiLaptop.java:182) ~[GuiLaptop.class:?] at net.minecraftforge.client.ForgeHooksClient.drawScreen(ForgeHooksClient.java:310) ~[ForgeHooksClient.class:?] at net.minecraft.client.renderer.EntityRenderer.updateCameraAndRender(EntityRenderer.java:1156) ~[EntityRenderer.class:?] ... 15 more I did post the crash
April 2, 20169 yr Author drawScreen: @Override public void drawScreen(int mouseX, int mouseY, float partialTicks) { this.drawDefaultBackground(); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); this.mc.getTextureManager().bindTexture(LAPTOP_GUI); int posX = (width - WIDTH) / 2; int posY = (height - HEIGHT) / 2; GuiHelper.drawModalRectWithUV(posX - 34, posY - 12, 0, 0, 1858, 632, 84, 64); //CHANGEABLE BACKGROUND if(currentWallpaper == 0) { this.mc.getTextureManager().bindTexture(BACKGROUND); } if(currentWallpaper == 1) { this.mc.getTextureManager().bindTexture(BACKGROUND2); } if(currentWallpaper == 2) { this.mc.getTextureManager().bindTexture(BACKGROUND3); } if(currentWallpaper == 3) { this.mc.getTextureManager().bindTexture(BACKGROUND4); } if(currentWallpaper == 4) { this.mc.getTextureManager().bindTexture(BACKGROUND5); } this.drawTexturedModalRect(posX - 2, posY + 10, 0, 0, 319, 162); if(this.window != null) { window.render(this, mc, getWindowX(), getWindowY(), mouseX, mouseY); } nextWallpaper.width = 10; nextWallpaper.height = 10; prevWallpaper.width = 10; prevWallpaper.height = 10; initGui(); bar.render(this, mc, posX + 10, posY + HEIGHT - 28, mouseX, mouseY); super.drawScreen(mouseX, mouseY, partialTicks); <<<< CRASHES GAME } initGui: @Override public void initGui() { super.initGui(); int posX = (width - WIDTH) / 2; int posY = (height - HEIGHT) / 2; Keyboard.enableRepeatEvents(true); bar = new ApplicationBar(); bar.init(buttonList, posX + 10, posY + HEIGHT - 28); nextWallpaper = new GuiButton(0, posX + 7, posY + 10, ">"); prevWallpaper = new GuiButton(0, posX - 3, posY + 10, "<"); buttonList.add(nextWallpaper); buttonList.add(prevWallpaper); }
April 2, 20169 yr Author My GH is being weird rn. Full class: package thexnator.computermod.gui; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.lwjgl.input.Keyboard; import org.lwjgl.opengl.GL11; import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.WorldRenderer; import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ResourceLocation; import thexnator.computermod.app.components.ApplicationBar; import thexnator.computermod.app.components.Window; import thexnator.computermod.network.PacketHandler; import thexnator.computermod.util.GuiHelper; public class GuiLaptop extends GuiScreen { public static final int ID = 0; private static final ResourceLocation LAPTOP_GUI = new ResourceLocation("cm:textures/gui/laptop.png"); private static final ResourceLocation BACKGROUND = new ResourceLocation("cm:textures/gui/background.png"); private static final ResourceLocation BACKGROUND2 = new ResourceLocation("cm:textures/gui/background2.png"); private static final ResourceLocation BACKGROUND3 = new ResourceLocation("cm:textures/gui/background3.png"); private static final ResourceLocation BACKGROUND4 = new ResourceLocation("cm:textures/gui/background4.png"); private static final ResourceLocation BACKGROUND5 = new ResourceLocation("cm:textures/gui/background5.png"); //public static final List<ResourceLocation> WALLPAPERS = new ArrayList<ResourceLocation>(); private int WIDTH = 316; private int HEIGHT = 200; private ApplicationBar bar; private Window window; private NBTTagCompound data; public static int currentWallpaper; private int tileX, tileY, tileZ; private int lastMouseX, lastMouseY; private boolean dragging = false; private boolean dirty = false; private GuiButton nextWallpaper; private GuiButton prevWallpaper; public GuiLaptop(NBTTagCompound data, int tileX, int tileY, int tileZ) { this.data = data; this.tileX = tileX; this.tileY = tileY; this.tileZ = tileZ; // this.currentWallpaper = data.getInteger("CurrentWallpaper"); // if(currentWallpaper < 0 || currentWallpaper >= WALLPAPERS.size()) // { // this.currentWallpaper = 0; // } } @Override public void initGui() { super.initGui(); int posX = (width - WIDTH) / 2; int posY = (height - HEIGHT) / 2; Keyboard.enableRepeatEvents(true); bar = new ApplicationBar(); bar.init(buttonList, posX + 10, posY + HEIGHT - 28); nextWallpaper = new GuiButton(0, posX + 7, posY + 10, ">"); prevWallpaper = new GuiButton(0, posX - 3, posY + 10, "<"); buttonList.add(nextWallpaper); buttonList.add(prevWallpaper); } @Override public boolean doesGuiPauseGame() { return false; } @Override public void onGuiClosed() { Keyboard.enableRepeatEvents(false); closeApplication(); //data.setInteger("CurrentWallpaper", this.currentWallpaper); if(dirty) { //PacketHandler.INSTANCE.sendToServer(new MessageSaveData(tileX, tileY, tileZ, data)); } bar = null; window = null; data = null; } @Override public void drawScreen(int mouseX, int mouseY, float partialTicks) { this.drawDefaultBackground(); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); this.mc.getTextureManager().bindTexture(LAPTOP_GUI); //screen int posX = (width - WIDTH) / 2; int posY = (height - HEIGHT) / 2; //this.drawTexturedModalRect(posX, posY, 0, 0, 316, 200); //corners // this.drawTexturedModalRect(posX, posY, 0, 0, 10, 10); // this.drawTexturedModalRect(posX + WIDTH - 11, posY , 12, 0, 10, 10); // this.drawTexturedModalRect(posX + WIDTH - 11, posY + HEIGHT - 11, 8, 13, 10, 10); //edges // drawModalRectWithUV(posX + 10, posY - 6, 10, 0, WIDTH - 20, 16, 1, 10); // drawModalRectWithUV(posX + WIDTH - 10, posY + 10, 11, 10, 26, HEIGHT - 20, 10, 1); //drawModalRectWithUV(posX + 10, posY + HEIGHT - 6, 10, 16, WIDTH - 20, 16, 1, 10); //drawModalRectWithUV(posX - 6, posY + 10, 0, 10, 26, HEIGHT - 20, 10, 1); //center //drawModalRectWithUV(posX + 10, posY + 10, 10, 10, WIDTH - 20, HEIGHT - 14, 1, 1); /* Just decided to render it all at once */ GuiHelper.drawModalRectWithUV(posX - 34, posY - 12, 0, 0, 1858, 632, 84, 64); //CHANGEABLE BACKGROUND if(currentWallpaper == 0) { this.mc.getTextureManager().bindTexture(BACKGROUND); } if(currentWallpaper == 1) { this.mc.getTextureManager().bindTexture(BACKGROUND2); } if(currentWallpaper == 2) { this.mc.getTextureManager().bindTexture(BACKGROUND3); } if(currentWallpaper == 3) { this.mc.getTextureManager().bindTexture(BACKGROUND4); } if(currentWallpaper == 4) { this.mc.getTextureManager().bindTexture(BACKGROUND5); } this.drawTexturedModalRect(posX - 2, posY + 10, 0, 0, 319, 162); /* BACKGROUND */ // addWallpaper(BACKGROUND); // this.mc.getTextureManager().bindTexture(BACKGROUND); // this.drawTexturedModalRect(posX - 2, posY + 10, 0, 0, 319, 162); if(this.window != null) { window.render(this, mc, getWindowX(), getWindowY(), mouseX, mouseY); } nextWallpaper.width = 10; nextWallpaper.height = 10; prevWallpaper.width = 10; prevWallpaper.height = 10; initGui(); // nextWallpaper.drawButton(mc, posX + 7, posY + 10); // prevWallpaper.drawButton(mc, posX - 3, posY + 10); bar.render(this, mc, posX + 10, posY + HEIGHT - 28, mouseX, mouseY); super.drawScreen(mouseX, mouseY, partialTicks); } @Override protected void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException { this.lastMouseX = mouseX; this.lastMouseY = mouseY; int posX = (width - WIDTH) / 2; int posY = (height - HEIGHT) / 2; this.bar.handleClick(this, posX + 10, posY + HEIGHT - 28, mouseX, mouseY, mouseButton); // if(isMouseInside(mouseX, mouseY, posX - 12, posY + 10, posX - 2, posY)) // { // nextWallpaper.enabled = true; // nextWallpaper(); // } if(window != null) { int windowX = getWindowX(); int windowY = getWindowY(); this.window.handleClick(this, windowX, windowY, mouseX, mouseY, mouseButton); if(mouseX >= windowX + window.offsetX + 1 && mouseX <= windowX + window.offsetX + window.width - 13) { if(mouseY >= windowY + window.offsetX + 1 && mouseY <= windowY+ window.offsetY + 11) { this.dragging = true; return; } } } //super.mouseClicked(mouseX, mouseY, mouseButton); } @Override protected void mouseReleased(int mouseX, int mouseY, int state) { super.mouseReleased(mouseX, mouseY, state); this.dragging = false; } @Override protected void keyTyped(char typedChar, int keyCode) throws IOException { if(window != null) { this.window.handleKeyTyped(typedChar, keyCode); } super.keyTyped(typedChar, keyCode); } @Override protected void mouseClickMove(int mouseX, int mouseY, int clickedMouseButton, long timeSinceLastClick) { int posX = (width - WIDTH) / 2; int posY = (height - HEIGHT) / 2; if(dragging && window != null) { if(mouseX >= posX + 10 && mouseX <= posX + WIDTH - 20 && mouseY >= posY + 10 && mouseY <= posY + HEIGHT - 20) { window.handleDrag(this, getWindowX(), getWindowY(), -(lastMouseX = mouseX), -(lastMouseY - mouseY), posX + 10, posY + 10); } } } @Override protected void actionPerformed(GuiButton button) throws IOException { // if(window != null) // { // window.handleButtonClick(this, button); // } if (button == this.nextWallpaper) { nextWallpaper(); System.out.println("nextwallpaper"); } if (button == this.prevWallpaper) { prevWallpaper(); System.out.println("prevwallpaper"); } } @Override public void drawHoveringText(List<String> textLines, int x, int y) { super.drawHoveringText(textLines, x, y); } // public void openApplication(Application app) // { // closeApplication(); // window = new Window(app); // window.init(buttonList, getWindowX(), getWindowY()); // if(data.hasKey(app.getID())) // { // app.load(data.getCompoundTag(app.getID())); // } // Minecraft.getMinecraft().getSoundHandler().playSound(PositionedSoundRecord.create(new ResourceLocation("gui.button.press"), 1.0F)); // } public void closeApplication() { if(window != null) { if(window.save(data)) { dirty = true; } //window.handleClose(buttonList); window = null; } } public int getWindowX() { if(window != null) { int posX = (width - WIDTH) / 2; return posX + (WIDTH - window.width) / 2; } return -1; } public int getWindowY() { if(window != null) { int posY = (height - HEIGHT) / 2; return posY + 10 + (HEIGHT - 38 - window.height) / 2; } return -1; } public static void nextWallpaper() { if(currentWallpaper < 5) { currentWallpaper++; } } public static void prevWallpaper() { if(currentWallpaper > 0) { currentWallpaper--; } } public boolean isMouseInside(int mouseX, int mouseY, int x1, int y1, int x2, int y2) { return mouseX >= x1 && mouseX <= x2 && mouseY >= y1 && mouseY <= y2; } // public static void addWallpaper(ResourceLocation wallpaper) // { // if(wallpaper != null) // { // WALLPAPERS.add(wallpaper); // } // } }
April 2, 20169 yr Why the fuck are you calling initGui() from drawScreen() ? Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable. If you think this is the case, JUST REPORT ME. Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice. Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked. DO NOT PM ME WITH PROBLEMS. No help will be given.
April 2, 20169 yr I was testing things out, that was one of them. Well thats the core of the problems. Dont do it. Never call it
April 2, 20169 yr Author I was testing out to fix the problem, I have removed all the things that I tried that people have said are incorrect, so my testing is not the problem
April 3, 20169 yr Well, on your Git repo your init is not calling super. Do that and nothing but that, then come back here. Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable. If you think this is the case, JUST REPORT ME. Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice. Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked. DO NOT PM ME WITH PROBLEMS. No help will be given.
April 3, 20169 yr Author Only calling super in init and nothing else works, with no buttons obviously, but when I do the same for the drawScreen class, the game will still give the same crash. Description: Rendering screen java.lang.NullPointerException: Rendering screen at net.minecraft.client.gui.GuiScreen.drawScreen(GuiScreen.java:86) at thexnator.computermod.gui.GuiLaptop.drawScreen(GuiLaptop.java:194) at net.minecraftforge.client.ForgeHooksClient.drawScreen(ForgeHooksClient.java:310) at net.minecraft.client.renderer.EntityRenderer.updateCameraAndRender(EntityRenderer.java:1156) at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1107) at net.minecraft.client.Minecraft.run(Minecraft.java:380) at net.minecraft.client.main.Main.main(Main.java:116) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) at net.minecraft.launchwrapper.Launch.main(Launch.java:28) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source) at GradleStart.main(Unknown Source) and this [Client thread/FATAL]: Reported exception thrown! net.minecraft.util.ReportedException: Rendering screen at net.minecraft.client.renderer.EntityRenderer.updateCameraAndRender(EntityRenderer.java:1183) ~[EntityRenderer.class:?] at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1107) ~[Minecraft.class:?] at net.minecraft.client.Minecraft.run(Minecraft.java:380) [Minecraft.class:?] at net.minecraft.client.main.Main.main(Main.java:116) [Main.class:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_72] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_72] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_72] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_72] at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?] at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_72] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_72] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_72] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_72] at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source) [start/:?] at GradleStart.main(Unknown Source) [start/:?] Caused by: java.lang.NullPointerException at net.minecraft.client.gui.GuiScreen.drawScreen(GuiScreen.java:86) ~[GuiScreen.class:?] at thexnator.computermod.gui.GuiLaptop.drawScreen(GuiLaptop.java:194) ~[GuiLaptop.class:?] at net.minecraftforge.client.ForgeHooksClient.drawScreen(ForgeHooksClient.java:310) ~[ForgeHooksClient.class:?] at net.minecraft.client.renderer.EntityRenderer.updateCameraAndRender(EntityRenderer.java:1156) ~[EntityRenderer.class:?] ... 15 more
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.