Créer un item container (type backpack / sac à dos)
-
Merci je teste cela.
-
Sac :
@Override public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { player.openGui(ModAltisCraft.instance, 1, world, (int) player.posX, (int) player.posY, (int) player.posZ); return stack; }
Mod :
@Mod(modid="altiscraft.MODID", name="AltisCraft.fr", version="1.0.0") public class ModAltisCraft { public static final String MODID = "altiscraft"; @Mod.Instance("altiscraft.MODID") public static ModAltisCraft instance; public static final int guiIDMenu = 0; public static final int GuiSac = 1;
Et le Gui ne s’ouvre pas de l’aide s’il vous plaît ?
-
As-tu enregistré ton guiHandler ? Si oui, envoi ton guiHandler
Envoyé de mon SM-G920F en utilisant Tapatalk
-
Mod :
@Mod.EventHandler public void init(FMLInitializationEvent event) { NetworkRegistry.INSTANCE.registerGuiHandler(instance, new GuiHandler()); }
GuiHandler :
package fr.altiscraft.benjaminloison.gui; import cpw.mods.fml.common.network.IGuiHandler; import fr.altiscraft.benjaminloison.common.ConteneurSac; import fr.altiscraft.benjaminloison.common.InventaireSac; import fr.altiscraft.benjaminloison.common.Sac; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; public class GuiHandler implements IGuiHandler { @Override public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { switch (ID) { case 0: if (player.getHeldItem() == null || !(player.getHeldItem().getItem() instanceof Sac)) return null; return new ConteneurSac(player.inventory, new InventaireSac(player.getHeldItem(), 54)); } return null; } @Override public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { switch (ID) { case 0: if (player.getHeldItem() == null || !(player.getHeldItem().getItem() instanceof Sac)) return null; return new GuiSac(player.inventory, new InventaireSac(player.getHeldItem(), 54)); } return null; } }
-
Normal, tu demandes l’id 1 mais ton guiHandler c’est case 0
Envoyé de mon SM-G920F en utilisant Tapatalk
-
player.openGui(ModAltisCraft.instance, 0, world, (int) player.posX, (int) player.posY, (int) player.posZ); ``` ne change rien :/ et ```java public static final int GuiSac = 0; ``` non plus :/
-
@Mod.Instance("altiscraft.MODID") public static ModAltisCraft instance;
…
C’est soit :@Mod.Instance(ModAltisCraft.MODID) public static ModAltisCraft instance;
soit
@Mod.Instance("altiscraft") public static ModAltisCraft instance;
Mais pas le mélange des deux …
-
Avec ça ```java
@Mod.Instance(ModAltisCraft.MODID)
public static ModAltisCraft instance;J'ai ce crash : java.lang.NullPointerException: Initializing game at cpw.mods.fml.common.network.NetworkRegistry.registerGuiHandler(NetworkRegistry.java:219) at fr.altiscraft.benjaminloison.common.ModAltisCraft.init(ModAltisCraft.java:574) Avec la ligne 574 : ```java NetworkRegistry.INSTANCE.registerGuiHandler(instance, new GuiHandler());
Je comprends pas le NPE
-
Ah en fait cette ligne est fausse aussi :
@Mod(modid=“altiscraft.MODID”, name=“AltisCraft.fr”, version=“1.0.0”)
Du-coup les deux erreurs se compensaient …
ça devrait être :
@Mod(modid=ModAltisCraft.MODID, name=“AltisCraft.fr”, version=“1.0.0”)mais ça veut aussi dire que l’erreur ne vient pas de là.
-
C’est bon j’arrive à relancer le jeu mais ça n’ouvre toujours pas mon Sac
-
Renvoi toutes tes classes
Envoyé de mon SM-G920F en utilisant Tapatalk
-
@‘robin4002’:
mais ça veut aussi dire que l’erreur ne vient pas de là.
je m’en doutais. Essayes de mettre des System.out.println par ci par là.
-
player.openGui(ModAltisCraft.instance, 0, world, (int) player.posX, (int) player.posY, (int) player.posZ); ``` Est censé lire ça ? ```java public static final int GuiSac = 0; ``` Non ?
-
? Pas compris. De plus SCAREX t’as demandé de renvoyer tout ton code.
-
Le code est trop long, voici un pastbin: http://pastebin.com/brE9q503
-
Pourquoi tu as deux gui handler ?
C’est un gui handler par mod. ça explique pourquoi ça ne fonctionne pas … Le deuxième écrase le premier. -
Et comment on peut fusionner ça :
@Override public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { TileEntity tile = world.getTileEntity(x, y, z); if(tile instanceof TileEntityPoubelle) { return new ContainerPoubelle((TileEntityPoubelle)tile, player.inventory); } return null; } ``` et ça ? ```java @Override public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { switch (ID) { case 0: if (player.getHeldItem() == null || !(player.getHeldItem().getItem() instanceof Sac)) return null; System.out.println("Test2"); return new ConteneurSac(player.inventory, new InventaireSac(player.getHeldItem(), 54)); } return null; }
-
Bah il y a plein de façon de le faire, par exemple tu peux décider que l’id 0 est pour les Gui qui s’ouvrent à l’aide du TileEntity (le 1er quoi) et que si c’est n’importe quel autre id tu passe par le switch
Tu peux aussi mettre le code avec le tileEntity en premier, si il n’y a aucun return exécuté ça arrivera au switch
-
C’est bon merci
-
j’ai un problème, l’item du backpack est présent mais quand je fait clique droit dessus sa me met shutting down internat server et sa crash. je modde en 1.7.10 et j’ai recopié le tuto a la lettre et puis je comprend assez le code. j’ai aucune erreur dans le code donc je ne sait pas d’ou sa vient
j’ai regardé le crash report et l’erreur vient de là : at com.ludrak.mods.bags.backPack.onItemRightClick(backPack.java:34)et cette ligne c’est : player.openGui(MinecraftAddMod.instance, 0, world, (int) player.posX, (int) player.posY, (int) player.posZ); dans la font ion onItemRightClick() de mon item ^^
j’espère que vous comprendrez et que j’ai donné assez de détails
merci d’avance