Résolu Un GUI basique
-
Donc, je cherche a créer un GUI basique avec 2 étapes :
1- La base s’ouvre, avec un bouton a appuyer ( avec écrit Otacon dessus )
2- Une fois qu’on clique, la face d’otacon apparait :
Et nous dit un truc randomIl faudrait que le GUI apparaisse en appuyant sur une touche ( a savoir P )
Je n’ai aucune idée de comment faire, pourtant j’ai bien regardé le code source.
Merci d’avance.
-
Alors, pour le bouton c’est simple, tu fais une boolean trigger liée a la fonction qui check les boutons
Ensuite, pour ouvrir avec une touche, regarde comment l’inventaire s’ouvre
-
-
@‘Patatoufet’:
http://www.minecraftforum.net/topic/1798625-162sobiohazardouss-forge-keybinding-tutorial/
Il me mets une erreur a
("Codec", Keyboard.KEY_P)};
KEY_P cannot be resolved or is not a field
-
Tu a bien pensé au
KeyBinding[] key = {new KeyBinding("Codec", Keyboard.KEY_P)}; boolean[] repeat = {false}; KeyBindingRegistry.registerKeyBinding(new CodecKeyBind(key, repeat));
?
-
Évidemment …
-
Tu as du importer la mauvaise classe Keyboard.
Vérifie que tu as bien importé org.lwjgl.util.Keyboard -
Merci. Et maintenant ?
-
#Classe principale(Classe principale)
Dans la déclarationpublic static Main INSTANCE;
Dans le onInit
KeyBindingRegistry.registerKeyBinding(new TutoKeyBind());
#Crée ta classe qui gère les touches (Crée ta classe qui gère les touches )
public class TutoKeyBind extends KeyHandler { public static KeyBinding tutoKey = new KeyBinding("key.button.tutoKey", Keyboard.KEY_P); public FicheKeyBind() { 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. { player.openGui(Main.INSTANCE,TutorielGuiHandler.tutoGuiHandler,player.worldObj,(int) player.posX,(int) player.posY,(int) player.posZ); } } @Override public EnumSet <ticktype>ticks() { return EnumSet.allOf(TickType.class); } }
#Ton GuiHandler(Ton GuiHandler)
Attention un seul HuiGandler par mod.public class TutorielGuiHandler implements IGuiHandler{ public static final int tutoGuiHandler = 1; private EntityLiving entityL; @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; } } } ```</ticktype></ticktype></ticktype>
-
Voila, et les classes ContainerTuto et GuiTuto maintenant ? Je mets quoi dedans ?
-
Regarde le code du livre. Pour le bouton, il faudra faire que lorsque tu clic, ça ouvre un autre gui au joueur (l’id 2 ducoup).
-
Dans la console, il m’affiche
2014-02-18 17:57:44 [Avertissement] [ForgeModLoader] A mod tried to open a gui on the server without being a NetworkMod 2014-02-18 17:57:44 [Avertissement] [ForgeModLoader] A mod tried to open a gui on the server without being a NetworkMod 2014-02-18 17:57:45 [Avertissement] [ForgeModLoader] A mod tried to open a gui on the server without being a NetworkMod 2014-02-18 17:57:45 [Avertissement] [ForgeModLoader] A mod tried to open a gui on the server without being a NetworkMod
Dès que j’appuie sur P ?
-
@NetworkMod(clientSideRequired = true, serverSideRequired = false) à mettre dans la classe principale en dessus de @Mod.
-
Il y est déjà
-
Ton gui handler est enregistré dans ta classe principale ?
NetworkRegistry.instance().registerGuiHandler(new TonGuiHandler()); (ou quelque chose comme ça, je ne connais pas par cœur la méthode) -
Toujours aucun changements.
-
Tu as le
@Instance(“modid”)
public NomDelaClasse instance; dans ta classe principale ? -
ça ?
@Mod(modid = "MGS", name = "Metal gear cubid", version = "1.1.0")
-
Non, envoie toute ta classe principale (sur un paste bin si elle est longue).
-