Problème GUI
-
Salut a tous, j’ai essayer de créer un GUI Container avec un KeyBinging mais voila j’ai un crash: http://pastebin.com/20UhCpqY
voici mes classe:
main:package CoeSpell; import org.lwjgl.input.Keyboard; import CoeSpell.Container.TutoKeyBind; import CoeSpell.Container.TutorielGuiHandler; import net.minecraft.client.Minecraft; import net.minecraft.client.main.Main; import net.minecraft.client.settings.KeyBinding; import cpw.mods.fml.client.registry.KeyBindingRegistry; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.Mod.Instance; import cpw.mods.fml.common.SidedProxy; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.network.NetworkMod; import cpw.mods.fml.common.network.NetworkRegistry; @Mod(modid="coespell", name="CoeSpell", version="1.0.0") @NetworkMod(clientSideRequired=true, serverSideRequired=false) //NE JAMAIS MODIFIER public class CoeSpellMain { @SidedProxy(clientSide = "CoeSpell.ClientProxy", serverSide = "CoeSpell.CommonProxy") public static CoeSpell.CommonProxy proxy; @Instance("coespell") public static CoeSpellMain instance; @EventHandler public void PreInit(FMLPreInitializationEvent event){ //Configuration if(event.getSide().isClient()) { if(Minecraft.getMinecraft().mcDataDir.getPath().equals(".")) { // on fait rien car on est sur eclipse } else if(!Minecraft.getMinecraft().mcDataDir.getPath().contains("elementlauncher")) { try { throw(new Exception("Mauvais launcher détecté")); } catch(Exception ex) { System.exit(-1); } } } //tutomain.Blocks //tutomain.Items //Registers.Blocks //Registers.Items } @EventHandler public void Init(FMLInitializationEvent Event){ KeyBinding[] key = {new KeyBinding("Codec", Keyboard.KEY_P)}; boolean[] repeat = {false}; KeyBindingRegistry.registerKeyBinding(new TutoKeyBind()); NetworkRegistry.instance().registerGuiHandler(this.instance, new TutorielGuiHandler(key, repeat)); //Render proxy.registerRenderers(); //Recipe //Smelting } @EventHandler public void PostInit(FMLInitializationEvent event){ } }
ClientProxy:
package CoeSpell; import CoeLevel.CommonProxy; public class ClientProxy extends CommonProxy{ @Override public void registerRenderers(){ } }
GuiHandler:
package CoeSpell.Container; import net.minecraft.client.settings.KeyBinding; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; import cpw.mods.fml.common.network.IGuiHandler; public class TutorielGuiHandler implements IGuiHandler{ public static final int tutoGuiHandler = 1; private EntityLiving entityL; public TutorielGuiHandler(KeyBinding[] key, boolean[] repeat) { // TODO Auto-generated constructor stub } @Override public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { switch(ID){ case 1: return new ContainerTuto(); default : return null; } } @Override public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { switch(ID){ case 1: return new GuiTuto(); default : return null; } } }
KeyBinding:
package CoeSpell.Container; import java.util.EnumSet; import org.lwjgl.input.Keyboard; import CoeSpell.CoeSpellMain; import net.minecraft.client.Minecraft; import net.minecraft.client.main.Main; import net.minecraft.client.settings.KeyBinding; import net.minecraft.entity.player.EntityPlayer; import cpw.mods.fml.client.FMLClientHandler; import cpw.mods.fml.client.registry.KeyBindingRegistry.KeyHandler; import cpw.mods.fml.common.TickType; import cpw.mods.fml.common.network.FMLNetworkHandler; import cpw.mods.fml.common.network.Player; public class TutoKeyBind extends KeyHandler { public static KeyBinding tutoKey = new KeyBinding("key.button.tutoKey", Keyboard.KEY_P); public TutoKeyBind() { super(new KeyBinding[] {tutoKey}, new boolean[] {false}); } @Override public String getLabel() { return "Key Tutorial"; } @Override public void keyDown(EnumSet <ticktype>types, KeyBinding kb, boolean tickEnd, boolean isRepeat) { } @Override public void keyUp(EnumSet <ticktype>types, KeyBinding kb, boolean tickEnd) { EntityPlayer player = FMLClientHandler.instance().getClient().thePlayer; Minecraft mc = Minecraft.getMinecraft(); if(kb.keyCode == tutoKey.keyCode && mc.currentScreen == null) // Tu vérifie qu'il à appuyer sur la touche et qu'il a pas d'autre gui d'ouvert. { FMLNetworkHandler.openGui(player, CoeSpellMain.instance, 10, player.worldObj, (int)Math.floor(player.posX), (int)Math.floor(player.posY), (int)Math.floor(player.posZ)); } } @Override public EnumSet <ticktype>ticks() { return EnumSet.allOf(TickType.class); } } ```</ticktype></ticktype></ticktype>
-
Tu te perds entre tes différents mod. Tu as importé le CommonProxy d’un autre mod dans ton client proxy, forcement ça fonctionne pas.
-
a merde j’ai pas fait gaffe
donc mon jeut ne crashe plus, mais ca vais pas m’ouvrir le GUI -
Normal, tu lui dis d’ouvrir avec l’id 10, et dans le gui handler tu as mit l’id 1.
Donc soit tu change le 10 en 1 dans la fonction FMLNetworkHandler.openGui, soit tu mets case 10 dans ton gui handler.En passant :
public static final int tutoGuiHandler = 1; private EntityLiving entityL; public TutorielGuiHandler(KeyBinding[] key, boolean[] repeat) { // TODO Auto-generated constructor stub }
Ceci traîne dans ton gui handler et ne sert à rien.
-
ok c’est bon mon GUI s’ouvre, mais maintenant comment faire en sorte d’ajouter des item dedans (les item aurons une place défini et ne pourront pas changer de place)