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.
    • arthur111213A Hors-ligne
      arthur111213
      dernière édition par

      quand je clic droit sur mon bloc j’ai un message qui dit

      [Avertissement] [ForgeModLoader] A mod tried to open a gui on the server without being a NetworkMod

      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 ta classe principale, vérifie que tu as bien le @NetworkMod

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

          J’ai le @NetworkMod

          Voici ma classe principale

          
          package _fearZ.mod;
          
          import org.lwjgl.util.glu.Registry;
          
          import net.minecraft.block.Block;
          import net.minecraft.block.BlockChest;
          import net.minecraft.block.material.Material;
          import net.minecraft.creativetab.CreativeTabs;
          import _fearZ.mod.blocks.BlockPharmacie;
          import _fearZ.mod.common.CommonProxy;
          import _fearZ.mod.tileentity.TileEntityArmoirePh;
          import cpw.mods.fml.common.Mod;
          import cpw.mods.fml.common.Mod.EventHandler;
          import cpw.mods.fml.common.Mod.Init;
          import cpw.mods.fml.common.Mod.Instance;
          import cpw.mods.fml.common.Mod.PreInit;
          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.NetworkMod;
          import cpw.mods.fml.common.network.NetworkMod.SidedPacketHandler;
          import cpw.mods.fml.common.network.NetworkRegistry;
          import cpw.mods.fml.common.registry.GameRegistry;
          import cpw.mods.fml.common.registry.LanguageRegistry;
          
          @Mod(modid = "fearz", name = "FearZ", version = "1.0.0")
          @NetworkMod(clientSideRequired = true, serverSideRequired = true)
          
          public class Mod_FearZ
          {
          @Instance("FearZMod")
          public static Mod_FearZ modInstance;
          @SidedProxy(clientSide="_fearZ.mod.client.ClientProxy", serverSide="_fearZ.mod.common.CommonProxy")
          public static CommonProxy proxy;
          
          /**blocks*/
          public static Block armoirePh;
          
          /**Items*/
          
          /**Creative Tabs*/
          public static final CreativeTabs onglet = new OngletCreatif(CreativeTabs.getNextID(), "FearZ");
          
          @EventHandler
          public void PreInit(FMLPreInitializationEvent event)
          {
          /**Blocks*/
          armoirePh = new BlockPharmacie (1800).setBlockUnbreakable().setHardness(10000f).setStepSound(Block.soundMetalFootstep).setUnlocalizedName("ArmoirePharmacie");
          GameRegistry.registerBlock(armoirePh, "armoirePh");
          
          }
          
          @EventHandler
          public void Init(FMLInitializationEvent event)
          {
          /**Mobs*/
          
          /**Render*/
          proxy.registerRender();
          proxy.registerTileEntityRender();
          
          /**NetWork*/
          
          /**Recipes*/
          
          /**TileEntityRegistry*/
          GameRegistry.registerTileEntity(TileEntityArmoirePh.class, "pharmacie");
          
          NetworkRegistry.instance().registerGuiHandler(this.modInstance, new GuiHandlerArmoirePh());
          
          }
          
          @EventHandler
          public void PostInit(FMLPostInitializationEvent event)
          {
          /**Integration avec les autres mods*/
          }
          }
          
          
          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

            Mauvaise instance, dans ton @Instance tu dois avoir ton modid :

            @Instance("fearz")
            public static Mod_FearZ modInstance;
            

            à la place de :

            @Instance("FearZMod")
            public static Mod_FearZ modInstance;
            
            1 réponse Dernière réponse Répondre Citer 0
            • arthur111213A Hors-ligne
              arthur111213
              dernière édition par

              Merci beaucoup, ça marche nickel 🙂

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

                Rebonjour. J’aimerais savoir si quelqu’un sais comment animer un bloc. j’ai déjà cherché sur google, fait des testes de mon côté, et même essayé de suivre cette page mais rien à faire. Je m’explique : j’aimerais que mon bloc fonctionne comme un coffre (qu’il s’ouvre et se ferme). Sauf que mon bloc ressemble plus à une armoire et qu’il a deux portes qui doivent s’ouvrir vers les côtés. Ce qui m’empêche de reprendre le code du coffre qui est d’ailleurs trop compliqué pour moi.

                J’aimerais donc savoir si quelqu’un saurais ce que je dois faire pour faire fonctionner mon bloc.

                J’ai remarqué dans le tutoriel la présence des fonction “oppenChest()” et “closeChest()”. J’imagine bien que ça a un rapport. mais je ne parviens pas à me servir de ces fonctions.

                Je précise que c’est un bloc TileEntity.

                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

                  Je n’es pas parlé des fonctions open et close Chest car elles ne servent pas dans le tutoriel, mais elles doivent normalement être dans ton code.
                  J’ai encore jamais fait d’animation, mais je vais voir ce que je peux faire.

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

                    Merci bien. J’attends de voir ce que tu trouves 🙂

                    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

                      http://www.minecraftforgefrance.fr/showthread.php?tid=375
                      Première partie terminé, il y a ce qu’il te faut.

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

                        Merci beaucoup, je vais voir ça de ce 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

                          Vérifie toutes les fonctions en rapport avec les tile entity, et envoie tes codes (de préférence via des liens pastebin pour ne pas spammer), on ne peut pas deviner tes codes !

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

                            Bonjour Robin,

                            Je me permet de laisser un message d’une part pour vous remercier de vôtre tuto qui est très bien mais qui manque un poil d’explication (je débute c’est sans doute pour ça).

                            Mais aussi car j’ai une erreur dans le code.
                            J’ai relu mais je n’arrive pas à trouver mon erreur, voici mon problème :

                            Quand j’ajoute

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

                            Il ne reconnait pas l’instance et la souligne en rouge.

                            Pourriez-vous m’aider ? Merci pour vôtre aide, encore une fois pour vôtre/vos tutos qui m’aident vraiment.

                            Bonne journée.

                            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 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
                                            • 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