Posted November 8, 201311 yr I'm trying to open a GUI that extends GuiScreen, but nothing seems to happen. I put a check to see if my GUI handler was working, and it was. GuiStats: package net.rpg.gui; import java.util.Iterator; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiMainMenu; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.multiplayer.WorldClient; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.ResourceLocation; import net.rpg.Util; import net.rpg.handler.ExtendedPlayerHandler; import org.lwjgl.opengl.GL11; public class GuiStats extends GuiScreen { private int coolDown; private int xSize = 176; private int ySize = 166; private EntityPlayer player; private ExtendedPlayerHandler extendedPlayer; private static final ResourceLocation texture = new ResourceLocation(Util.RESOURCE_START + "/stats"); public GuiStats(EntityPlayer player) { Util.print("HELLO?"); this.player = player; try { this.extendedPlayer = (ExtendedPlayerHandler)player.getExtendedProperties(ExtendedPlayerHandler.EXT_PROP_NAME); } catch(Exception e) { Util.print("Couldn't get stats for " + player.username + "!!!"); } } @Override public void initGui() { this.buttonList.clear(); if (this.mc.theWorld.getWorldInfo().isHardcoreModeEnabled()) { if (this.mc.isIntegratedServerRunning()) { this.buttonList.add(new GuiButton(1, this.width / 2 - 100, this.height / 4 + 96, I18n.getString("deathScreen.deleteWorld"))); } else { this.buttonList.add(new GuiButton(1, this.width / 2 - 100, this.height / 4 + 96, I18n.getString("deathScreen.leaveServer"))); } } else { this.buttonList.add(new GuiButton(1, this.width / 2 - 100, this.height / 4 + 72, I18n.getString("deathScreen.respawn"))); this.buttonList.add(new GuiButton(2, this.width / 2 - 100, this.height / 4 + 96, I18n.getString("deathScreen.titleScreen"))); if (this.mc.getSession() == null) { ((GuiButton)this.buttonList.get(1)).enabled = false; } } GuiButton guibutton; for (Iterator iterator = this.buttonList.iterator(); iterator.hasNext(); guibutton.enabled = false) { guibutton = (GuiButton)iterator.next(); } } @Override protected void keyTyped(char par1, int par2) { } @Override public void drawScreen(int par1, int par2, float par3) { this.drawGradientRect(0, 0, this.width, this.height, 1615855616, -1602211792); GL11.glPushMatrix(); GL11.glScalef(2.0F, 2.0F, 2.0F); this.drawCenteredString(this.fontRenderer, EnumChatFormatting.YELLOW + "Race: ", this.width / 2 / 2, 30, 16777215); GL11.glPopMatrix(); //this.drawCenteredString(this.fontRenderer, I18n.getString("deathScreen.hardcoreInfo"), this.width / 2, 144, 16777215); //this.drawCenteredString(this.fontRenderer, I18n.getString("deathScreen.score") + ": " + EnumChatFormatting.YELLOW + this.mc.thePlayer.getScore(), this.width / 2, 100, 16777215); super.drawScreen(par1, par2, par3); } @Override protected void actionPerformed(GuiButton button) { switch(button.id) { case(1): { this.mc.thePlayer.respawnPlayer(); this.mc.displayGuiScreen((GuiScreen)null); break; } case(2): { this.mc.theWorld.sendQuittingDisconnectingPacket(); this.mc.loadWorld((WorldClient)null); this.mc.displayGuiScreen(new GuiMainMenu()); } } } @Override public void updateScreen() { super.updateScreen(); ++this.coolDown; GuiButton guibutton; if (this.coolDown == 20) { for (Iterator iterator = this.buttonList.iterator(); iterator.hasNext(); guibutton.enabled = true) { guibutton = (GuiButton)iterator.next(); } } } @Override public boolean doesGuiPauseGame() { return true; } } GuiHandler: package net.rpg.handler; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; import net.rpg.Util; import net.rpg.gui.GuiChooseRace; import net.rpg.gui.GuiStats; import net.rpg.helper.GuiHelper; import cpw.mods.fml.common.network.IGuiHandler; public class GuiHandler implements IGuiHandler { @Override public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { return null; } @Override public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { switch(ID) { case(0): { return new GuiStats(player); } case(1): { return new GuiChooseRace(); } } return null; } } Code I use to open it: player.openGui(RPG.instance, 0, player.worldObj, (int) player.posX, (int) player.posY, (int) player.posZ); Kain
November 8, 201311 yr Nothing seems to happen? try printing out in your getClientGuiElement() void and post the results. If it doesn't print you've either registered your handler incorrectly or the opening code isn't being run. Also switch cases do not need the brackets. That is an eyesore. I think its my java of the variables.
November 8, 201311 yr Author Nothing seems to happen? try printing out in your getClientGuiElement() void and post the results. If it doesn't print you've either registered your handler incorrectly or the opening code isn't being run. Also switch cases do not need the brackets. That is an eyesore. Oh. I just tried putting a print in, and it turns out that it doesn't call the Client side thing. But it does call the server side... Kain
November 8, 201311 yr forge will only send a gui packet when getServerGuiElement returns a Container.As you don't have a container the gui will be entirely client sided so you can call EntityPlayer#openGui from the client only, like Diesieben said. Author of PneumaticCraft, MineChess, Minesweeper Mod and Sokoban Mod. Visit www.minemaarten.com to take a look at them.
November 8, 201311 yr Author I tried it like this: if(player.worldObj.isRemote) { player.openGui(RPG.instance, 0, player.worldObj, (int) player.posX, (int) player.posY, (int) player.posZ); } Didn't call the client method? Do I need a container? Sorry if I sound a bit dumb, today has not been my brightest day. Kain
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.