Résolu Creation de gui
-
hello, j’aimerais crée un gui mais le problème c’est que je ne comprend pas du tout comment sa marche
j’ai chercher sur internet quelque explication mais rien trouver de satisfaisant ^^
si quelqu’un pourrait m’expliquer
-
-Si tu souhaites extends GuiScreen : http://www.minecraftforge.net/wiki/Basic_GUI
-Si tu souhaites extends GuiContainer : http://www.minecraftforge.net/wiki/Containers_and_GUIs -
@‘Plaigon’:
-Si tu souhaites extends GuiScreen : http://www.minecraftforge.net/wiki/Basic_GUI
-Si tu souhaites extends GuiContainer : http://www.minecraftforge.net/wiki/Containers_and_GUIsLa page du GuiScreen je l’avais trouvé j’ai fait tout ce qui était mis mais le problème c’est que je ne savais pas comment ouvrir le gui via un bouton sur le menue echap et aussi comment ajouter une image ainsi que des composant ^^
-
Pour draw un background sur un GuiScreen, voici la fonction que je te propose, à call dans la méthode drawScreen :
Minecraft.getMinecraft().getTextureManager().bindTexture(new ResourceLocation(TonMod.modid, "textures/gui/tongui.png")); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); int xCoord = (width - 300) / 2;//300 est la longueur de ton gui, à remplacer par la tienne int yCoord = (height - 300) / 2;//idem pour la hauteur drawTexturedModalRect(xCoord, yCoord, 0, 0, 275, 275); this.func_146270_b(1); super.drawScreen(i, j, f);
Pour l’ouvrir via un bouton, ce tuto devrait encore être bon, je pense
Quant aux nouveaux composants, c’est un peu à toi de te débrouiller…Regarde des gui’s déjà existants, ça t’aidera bien ! -
J’ai une erreur sur la ligne
```java
this.func_146270_b(1);EDIT: enfaite je croit avoir trouver j'ai remplacer par ```java this.drawWorldBackground(1);
EDIT 2:
Je vien de lancer le jeu pour voir si mon gui marche mais malheuresement mon jeu crash
–-- Minecraft Crash Report ----
// This is a token for 1 free hug. Redeem at your nearest Mojangsta: [HUG]Time: 05/05/16 18:06
Description: There was a severe problem during mod loading that has caused the game to failcpw.mods.fml.common.LoaderException: java.lang.ClassNotFoundException: fr.burning.testgui.ClientProxy
at cpw.mods.fml.common.ProxyInjector.inject(ProxyInjector.java:76)
at cpw.mods.fml.common.FMLModContainer.constructMod(FMLModContainer.java:512)
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 com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
at com.google.common.eventbus.EventBus.post(EventBus.java:275)
at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:212)
at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:190)
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 com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
at com.google.common.eventbus.EventBus.post(EventBus.java:275)
at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:119)
at cpw.mods.fml.common.Loader.loadMods(Loader.java:513)
at cpw.mods.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:208)
at net.minecraft.client.Minecraft.func_71384_a(Minecraft.java:480)
at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:878)
at net.minecraft.client.main.Main.main(SourceFile:148)
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)
Caused by: java.lang.ClassNotFoundException: fr.burning.testgui.ClientProxy
at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:191)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at cpw.mods.fml.common.ModClassLoader.loadClass(ModClassLoader.java:58)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at cpw.mods.fml.common.ProxyInjector.inject(ProxyInjector.java:59)
… 33 more
Caused by: java.lang.NullPointerException
at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:182)
… 39 mored’apres ce que je comprend le probleme vient de la classe ClientPorxy donc la voici ^^
public class ClientProxy { private static KeyBinding keyBindTest; Minecraft mc; public ClientProxy() { FMLCommonHandler.instance().bus().register(this); keyBindTest = new KeyBinding("guitest.key", Keyboard.KEY_T, "key.categories.testguimod"); ClientRegistry.registerKeyBinding(keyBindTest); } @SubscribeEvent public void onEvent(KeyInputEvent event) { // Si vous remplacez isPressed() par getIsKeyPressed() // Le chat sera inondé à chaque fois que vous presserez la touche if(keyBindTest.isPressed()) { keyTestTyped(); // Traitement de la touche } } private void keyTestTyped() { // La touche vient d'être appuyé !! mc.displayGuiScreen(new GuiTest()); } }
-
Forge arrive pas à trouver ton proxy client, vérifie que t’as bien écrit le nom du package où il est.
-
@‘AymericRed’:
Forge arrive pas à trouver ton proxy client, vérifie que t’as bien écrit le nom du package où il est.
oui c’est bien écrit, c’est sa le problème
-
Montre le ligne où tu enregistres le proxy avec le chemin de la classe et montre le “package …” en haut de ton ClientProxy, on sait jamais une fois j’ai bien du passer 5-10 minutes pour trouver où il y avait un pb.
-
@‘AymericRed’:
Montre le ligne où tu enregistres le proxy avec le chemin de la classe et montre le “package …” en haut de ton ClientProxy, on sait jamais une fois j’ai bien du passer 5-10 minutes pour trouver où il y avait un pb.
classe principale
package fr.buning.testgui; import cpw.mods.fml.common.Mod; 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.FMLPostInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.network.NetworkRegistry; @Mod(modid = "gui", name = "Basic GUI", version = "1.0.0") public class testgui { @Instance("gui") public static testgui instance; public static final String MODID = "gui"; @SidedProxy(clientSide = "fr.burning.testgui.ClientProxy", serverSide = "fr.burning.testgui.CommonProxy") public static CommonProxy proxy; @Mod.EventHandler public void preInit(FMLPreInitializationEvent event) throws Exception { System.out.println("/***PreInit***/"); } @Mod.EventHandler public void init(FMLInitializationEvent event) { System.out.println("/***Init***/"); proxy.registerKeybindings(); NetworkRegistry.INSTANCE.registerGuiHandler(instance, proxy); } @Mod.EventHandler public void postInit(FMLPostInitializationEvent event) { System.out.println("/***postInit***/"); } }
classe ClientProxy
package fr.buning.testgui; import org.lwjgl.input.Keyboard; import cpw.mods.fml.client.registry.ClientRegistry; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.InputEvent.KeyInputEvent; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiChat; import net.minecraft.client.settings.KeyBinding; import net.minecraft.util.ChatComponentText; public class ClientProxy { private static KeyBinding keyBindTest; Minecraft mc; public ClientProxy() { FMLCommonHandler.instance().bus().register(this); keyBindTest = new KeyBinding("guitest.key", Keyboard.KEY_T, "key.categories.testguimod"); ClientRegistry.registerKeyBinding(keyBindTest); } @SubscribeEvent public void onEvent(KeyInputEvent event) { // Si vous remplacez isPressed() par getIsKeyPressed() // Le chat sera inondé à chaque fois que vous presserez la touche if(keyBindTest.isPressed()) { keyTestTyped(); // Traitement de la touche } } private void keyTestTyped() { // La touche vient d'être appuyé !! mc.displayGuiScreen(new GuiTest()); } }
sa doit etre un faute d’othographe a la con
-
Ton ClientProxy est dans fr.buning.testgui, tu as oublié le “r”.
-
@‘AymericRed’:
Ton ClientProxy est dans fr.buning.testgui, tu as oublié le “r”.
Ha oui exact le con c’est sa quand on veut faire vite XD, merci