Créer un gui et un container sur un bloc (type coffre)
-
Fait voir ton gui handler ?
-
Le GuiHandler du bloc qui ne s’ouvre plus.
package _fearZ.mod; import _fearZ.mod.tileentity.TileEntityArmoirePh; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import cpw.mods.fml.common.network.IGuiHandler; public class GuiHandlerArmoirePh implements IGuiHandler { @Override public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { TileEntity te = world.getBlockTileEntity(x, y, z); if(te instanceof TileEntityArmoirePh) { return new ContainerArmoirePh(player.inventory, (TileEntityArmoirePh)te); } return null; } @Override public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { TileEntity te = world.getBlockTileEntity(x, y, z); if(te instanceof TileEntityArmoirePh) { return new GuiArmoirePh(player.inventory, (TileEntityArmoirePh)te); } return null; } }
Celui de mon nouveau bloc
package _fearZ.mod.gui.handler; import _fearZ.mod.containers.ContainerMChest; import _fearZ.mod.gui.GuiMChest; import _fearZ.mod.tileentity.TileEntityMChest; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import cpw.mods.fml.common.network.IGuiHandler; public class GuiHandlerMChest implements IGuiHandler { @Override public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { TileEntity te = world.getBlockTileEntity(x, y, z); if (te instanceof TileEntityMChest) { return new ContainerMChest(player.inventory, (TileEntityMChest)te); } return null; } @Override public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { TileEntity te = world.getBlockTileEntity(x, y, z); if (te instanceof TileEntityMChest) { return new GuiMChest(player.inventory, (TileEntityMChest)te); } return null; } }
-
C’est un guiHandler par mod, logiquement.
-
package _fearZ.mod; import _fearZ.mod.containers.ContainerMChest; import _fearZ.mod.gui.GuiMChest; import _fearZ.mod.tileentity.TileEntityMChest; import _fearZ.mod.tileentity.TileEntityArmoirePh; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; 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) { TileEntity te = world.getBlockTileEntity(x, y, z); if(te instanceof TileEntityArmoirePh) { return new ContainerArmoirePh(player.inventory, (TileEntityArmoirePh)te); } if (te instanceof TileEntityMChest) { return new ContainerMChest(player.inventory, (TileEntityMChest)te); } return null; } @Override public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { TileEntity te = world.getBlockTileEntity(x, y, z); if(te instanceof TileEntityArmoirePh) { return new GuiArmoirePh(player.inventory, (TileEntityArmoirePh)te); } if (te instanceof TileEntityMChest) { return new GuiMChest(player.inventory, (TileEntityMChest)te); } return null; } }
-
Ah d’accord. Merci pour l’info. je savais pas… ou peut-être ais-je mal lu le tuto.
-
J’ai suivie le tutoriel, vérifier mon code avec celui du github du tuto et tout à l’aire bon même éclipse ne dit rien, aucun message d’erreur, rien du tout, mais rien ne se passe quand je fait un clic droit sur mon block.
lien du code :
classe principale
GuiHandler
Class du block
Le GUI
Le container
Le TileEntityPouvez vous me dire où est mon erreur .
-
Étrange, le System.out.println(“BoxChest - ac”); s’affiche t-il dans la console ?
-
non justement,je l’avait mis afin de voir à quelle étape ça ne marchait pas
-
Dans ce cas ça veut dire que ta condition if(metadata <= 6 && metadata >= 11) n’est pas remplit, il faut que tu cherches pourquoi. (fait par exemple un player.addChatMessage(String.valueOf(metadata)); pour vérifier le metadata du bloc).
-
C’est en effet la condition qui a planté, je sais pas pourquoi car la syntaxe est bonne, et la condition (la valeur du metadata) aussi
18h30 :
je pense que je vais passer par un complément ou ( “||” ) ce ui me donneif(metadata == 6 || metadata == 7 || metadata == 8 || metadata == 9 || metadata == 10 || metadata == 11)
le truc c’est que la condition est bien plus lourde niveau écriture
18h45 :
C’est bon c’était ça, c’est quand même bizzard que la condition est buggé comme ça -
if(metadata >= 6 && metadata <= 11)
Comme ça, ça devrait fonctionner. Avec la condition que tu avais avant tu disais “si le metadata est inférieur ou égale à 6 et qu’il est supérieur ou égale à 11 alors” ce qui ne peut pas arriver comme il existe aucun nombre qui remplit cette condition. -
Salut je dois forcément mal faire, mais j’ai des erreurs partout.
Voici toutes mes classes :
Classe principale ModPirate http://pastebin.com/5piVduvS
Le block en question pour le coffre http://pastebin.com/TA1XwHUW
ContainerBigChest http://pastebin.com/514JcSJh
GuiBigChest http://pastebin.com/YKh7KWig
GuiHandlerTutorial http://pastebin.com/K2A9f9aJ
TitleEntityBigChest http://pastebin.com/UJQXakJn
TitleEntityTutorial http://pastebin.com/AcZECutX
TitleEntityTutorial2 http://pastebin.com/NyD7cQVPmerci d’avance :S
-
Heu je ne sais pas ce que tu as fait, mais la classe de ton bloc est complement érroné. (tout les @@ quelque chose @@ ne sont pas bon et tu as des méthodes dans d’autres méthodes …)
De plus tu n’as que besoin de 1 tile entity. -
comment modifier ce code pour que ça ouvre un container mais pas sur un bloc, en appuyant sur la touche P par exemple
-
C’est beaucoup plus complexe, ce tutoriel ne pourrait pas s’appliquer, car sans bloc tu n’as pas de tile entity pour sauvegarder les itemStack, il faudrait passer par un custom properties dans le joueur.
-
car c’est pour faire un livre de sort où l’on choisirai ses spell (des item)
-
@‘isador34’:
comment modifier ce code pour que ça ouvre un container mais pas sur un bloc, en appuyant sur la touche P par exemple
-
merci
-
Petite question, comment faire pour par exemple reproduire une enclume? qui n’a pas de TileEntity, je veux dire, pour le GUIhandler, comment cela se passe?
-
Tu peux utiliser les id dans le openGui oui alors tu compares avec le bloc.