MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    Créer un gui et un container sur un bloc (type coffre)

    Planifier Épinglé Verrouillé Déplacé Les interfaces (GUI) et les container
    1.6.x
    136 Messages 24 Publieurs 55.9k Vues 5 Watching
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • robin4002R Hors-ligne
      robin4002 Moddeurs confirmés Rédacteurs Administrateurs
      dernière édition par

      Dans ta classe principale, ajoute :

      @Instance("modid")
      public static NomDaTaClassePrincipale instance;
      

      Il faut bien suivre les tutoriels, c’est écrit dans un des premiers tutoriel : http://www.minecraftforgefrance.fr/showthread.php?tid=60

      Il est vrai que ce tutoriel n’est pas beaucoup détaillé, j’ai beaucoup “balancé des codes”, étant donner que je peux tourner tranquillement maintenant (faut encore que je configure pas mal de truc sur mon ordinateur, et encore je pense que le processeur de cette ordinateur va avoir du mal), je vais pouvoir faire une version en vidéo en 1.7 avec plus de détail et d’explication.

      1 réponse Dernière réponse Répondre Citer 0
      • H Hors-ligne
        Helenos
        dernière édition par

        C’est déjà fait

        @Instance("TAL")
        public static Devmain instance;
        

        J’ai remplacé votre code par :

        NetworkRegistry.instance().registerGuiHandler(NetworkRegistry.instance(), new GuiHandlerPlacard());
        

        Et ça marche. Donc je ne sais pas trop…

        Après une question plus personnel, j’ai suivis vôtre tuto pour faire un container particulier. Il ne suivrait pas la taille de l’inventaire ni d’un coffre “classic” mais serait de type 7 par 7 cases (Soit 2 case de moins que l’inventaire en longueur mais 1 ligne de cases en hauteur).

        Vous pouvez m’expliquer s’il vous plait comment construire ce code à moins qu’il est possible de modifier le code du coffre en lui même.

        Et puis ce sera l’occasion aux apprentis codeurs (comme moi) de pouvoir créer des containers indépendamment du code fourni par Mojang. Je ne vous oblige pas bien entendu et je comprendrais ce refus.

        Merci pour cette réponse rapide.
        Bonne journée.

        PS : Je viens de m’apercevoir d’un problème quand je veux placer un bloc à l’intérieur du bloc il disparaît…

        1 réponse Dernière réponse Répondre Citer 0
        • robin4002R Hors-ligne
          robin4002 Moddeurs confirmés Rédacteurs Administrateurs
          dernière édition par

          NetworkRegistry.instance(), c’est pas bon, tu peux m’envoyer toutes tes classes via des liens pastebin ?

          Si tu veux modifier la taille, c’est dans le container qu’il faut changer ça. Il y a plusieurs boucle for, c’est celle-ci qui ajoute les slots :

          for(int i = 0; i < 6; i++)
          {
          for(int j = 0; j < 9; j++)
          {
          this.addSlotToContainer(new Slot(teChest, j + i * 9, 8 + j * 18, 18 + i * 18));
          }
          }
          

          C’est ce code qui génère les slots, 96 ici, si tu veux faire 77 il suffit d’adapter les boules for.

          Il te faut aussi adapter le container :

          private ItemStack[] inventory = new ItemStack[72];
          

          72 était le nombre total de slot, si tu as un nombre trop petit tu vas avoir un OutOfBoundException (et 9×6 ça fait que 54, je sais pas pourquoi j’ai mit 72 x), 54 devrait fonctionner) donc 49 pour toi comme tu veux mettre 7*7 slots.

          Il ne faut pas non plus oublier d’adapter l’image du gui.

          1 réponse Dernière réponse Répondre Citer 0
          • H Hors-ligne
            Helenos
            dernière édition par

            Parfait, vous êtes exceptionnel !

            Je vous envoie mes classes par messages privés ne sachant le faire par des PasteBin.
            Merci encore pour les containers !

            1 réponse Dernière réponse Répondre Citer 0
            • robin4002R Hors-ligne
              robin4002 Moddeurs confirmés Rédacteurs Administrateurs
              dernière édition par

              NetworkRegistry.instance().registerGuiHandler(this.instance, new GuiHandlerPlacard());
              doit être dans la classe principale, dans la fonction init et non dans le client proxy, ce qui explique l’erreur, et le problème de syncro client ? serveur.

              1 réponse Dernière réponse Répondre Citer 0
              • arthur111213A Hors-ligne
                arthur111213
                dernière édition par

                Décidément j’enchaîne les problèmes sur ce sujet. J’ai créé un second block conteneur. Quand je l’ouvre, il fonctionne bien. Mais du coup, mon premier bloc ne s’ouvre plus. Il n’y a aucune réactions.

                1 réponse Dernière réponse Répondre Citer 0
                • robin4002R Hors-ligne
                  robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                  dernière édition par

                  Fait voir ton gui handler ?

                  1 réponse Dernière réponse Répondre Citer 0
                  • arthur111213A Hors-ligne
                    arthur111213
                    dernière édition par

                    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;
                    }
                    }
                    
                    
                    1 réponse Dernière réponse Répondre Citer 0
                    • Superloup10S Hors-ligne
                      Superloup10 Modérateurs
                      dernière édition par

                      C’est un guiHandler par mod, logiquement.

                      Si vous souhaitez me faire un don, il vous suffit de cliquer sur le bouton situé en dessous.

                      Je suis un membre apprécié et joueur, j'ai déjà obtenu 17 points de réputation.

                      1 réponse Dernière réponse Répondre Citer 0
                      • robin4002R Hors-ligne
                        robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                        dernière édition par

                        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;
                        
                        }
                        }
                        
                        1 réponse Dernière réponse Répondre Citer 0
                        • arthur111213A Hors-ligne
                          arthur111213
                          dernière édition par

                          Ah d’accord. Merci pour l’info. je savais pas… ou peut-être ais-je mal lu le tuto.

                          1 réponse Dernière réponse Répondre Citer 0
                          • Phenix246P Hors-ligne
                            Phenix246 Rédacteurs
                            dernière édition par

                            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 TileEntity

                            Pouvez vous me dire où est mon erreur .

                            1 réponse Dernière réponse Répondre Citer 0
                            • robin4002R Hors-ligne
                              robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                              dernière édition par

                              Étrange, le System.out.println(“BoxChest - ac”); s’affiche t-il dans la console ?

                              1 réponse Dernière réponse Répondre Citer 0
                              • Phenix246P Hors-ligne
                                Phenix246 Rédacteurs
                                dernière édition par

                                non justement,je l’avait mis afin de voir à quelle étape ça ne marchait pas

                                1 réponse Dernière réponse Répondre Citer 0
                                • robin4002R Hors-ligne
                                  robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                                  dernière édition par

                                  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).

                                  1 réponse Dernière réponse Répondre Citer 0
                                  • Phenix246P Hors-ligne
                                    Phenix246 Rédacteurs
                                    dernière édition par

                                    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 donne

                                    
                                    if(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

                                    1 réponse Dernière réponse Répondre Citer 0
                                    • robin4002R Hors-ligne
                                      robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                                      dernière édition par

                                      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.

                                      1 réponse Dernière réponse Répondre Citer 0
                                      • delogeD Hors-ligne
                                        deloge
                                        dernière édition par

                                        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/NyD7cQVP

                                        merci d’avance :S

                                        1 réponse Dernière réponse Répondre Citer 0
                                        • letherman255L Hors-ligne
                                          letherman255
                                          dernière édition par

                                          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.

                                          1 réponse Dernière réponse Répondre Citer 0
                                          • isadorI Hors-ligne
                                            isador Moddeurs confirmés Modérateurs
                                            dernière édition par

                                            comment modifier ce code pour que ça ouvre un container mais pas sur un bloc, en appuyant sur la touche P par exemple

                                            1 réponse Dernière réponse Répondre Citer 0
                                            • 1
                                            • 2
                                            • 3
                                            • 4
                                            • 5
                                            • 6
                                            • 7
                                            • 3 / 7
                                            • Premier message
                                              Dernier message
                                            Design by Woryk
                                            ContactMentions Légales

                                            MINECRAFT FORGE FRANCE © 2024

                                            Powered by NodeBB