MFF

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

    Création d'un Chest Detector

    Planifier Épinglé Verrouillé Déplacé Sans suite
    1.7.10
    48 Messages 7 Publieurs 9.4k Vues 1 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.
    • C Hors-ligne
      CensorHead
      dernière édition par

      J’ai finalement régler les erreurs (c’était tout bête, j’avais juste oublier de faire tout les imports) mais maintenant quand je lance minecraft le jeu fait comme si l’item n’existait pas.

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

        Tu l’as ajouté dans un onglet créatif ? Au pire essai de te le give, il doit s’appeler tonModID:sonNom

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

          Il n’existe même pas dans le /give.

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

            Envoie ta classe principale + la classe de ton objet dans des balises java

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

              package ErderionPackage.init;
              
              import java.util.ArrayList;
              import java.util.List;
              
              import cpw.mods.fml.common.Mod.EventHandler;
              import cpw.mods.fml.common.event.FMLPreInitializationEvent;
              import cpw.mods.fml.common.registry.GameRegistry;
              import net.minecraft.entity.Entity;
              import net.minecraft.item.Item;
              import net.minecraft.item.ItemStack;
              import net.minecraft.tileentity.TileEntity;
              import net.minecraft.world.ChunkCoordIntPair;
              import net.minecraft.world.World;
              
              public class ItemTileEntityFinder extends Item {
              
                  public static Item tileEntityFinder;
              
                  @EventHandler
                  public void preInit(FMLPreInitializationEvent event) {
                       tileEntityFinder= new ItemTileEntityFinder() .setUnlocalizedName("chest_detector");
                       GameRegistry.registerItem(tileEntityFinder, "tileEntityFinder");
                  }
              
                  @Override
                  public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean held) {
                      if(held) {
                          List <tileentity>tiles = world.loadedTileEntityList;
                          ArrayList <tileentity>tilesNear = new ArrayList<tileentity>();
                          ChunkCoordIntPair entityChunk = world.getChunkFromBlockCoords((int)entity.posX, (int)entity.posZ).getChunkCoordIntPair();
                          for(TileEntity tile : tiles) {
                              ChunkCoordIntPair tileChunk = world.getChunkFromBlockCoords(tile.xCoord, tile.zCoord).getChunkCoordIntPair();
                              if(tileChunk.chunkXPos >= entityChunk.chunkXPos - 2 &&
                                      tileChunk.chunkXPos <= entity.chunkCoordX + 2 &&
                                      tileChunk.chunkZPos >= entity.chunkCoordZ - 2 &&
                                      tileChunk.chunkZPos <= entity.chunkCoordZ + 2) {
                                  tilesNear.add(tile);
                              }
                          }
                      }
                  }
              
                  public static void init()
                  {
                      // TODO Auto-generated method stub
              
                  }
              
                  public static void register()
                  {
                      // TODO Auto-generated method stub
              
                  }
              
              }
              
              

              La classe de mon item

              package ErderionPackage;
              
              import ErderionPackage.Proxy.CommonProxy;
              import ErderionPackage.init.BlockMod;
              import ErderionPackage.init.ItemTileEntityFinder;
              import cpw.mods.fml.common.Mod;
              import cpw.mods.fml.common.Mod.EventHandler;
              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;
              
              @Mod(modid = Reference.MOD_ID, name = Reference.MOD_NAME, version = Reference.VERSION)
              
              public class Erderion
              {
                 @SidedProxy(clientSide = Reference.CLIENT_PROXY, serverSide = Reference.SERVER_PROXY)
                 public static CommonProxy proxy;
              
                 @EventHandler
                 public void preInit(FMLPreInitializationEvent event)
                 {
                     BlockMod.init();
                     BlockMod.register();
                     ItemTileEntityFinder.init();
                     ItemTileEntityFinder.register();
                 }
              
                 @EventHandler
                 public void init(FMLInitializationEvent event)
                 {
                     proxy.registerRenders();
                 }
              
                 @EventHandler
                 public void postInit(FMLPostInitializationEvent event)
                 {
              
                 }
              }
              
              

              La classe principale de mon mod</tileentity></tileentity></tileentity>

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

                Aïe aïe aïe ….

                
                public class ItemTileEntityFinder extends Item {
                
                @Override
                public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean held) {
                if(held) {
                List <tileentity>tiles = world.loadedTileEntityList;
                ArrayList <tileentity>tilesNear = new ArrayList<tileentity>();
                ChunkCoordIntPair entityChunk = world.getChunkFromBlockCoords((int)entity.posX, (int)entity.posZ).getChunkCoordIntPair();
                for(TileEntity tile : tiles) {
                ChunkCoordIntPair tileChunk = world.getChunkFromBlockCoords(tile.xCoord, tile.zCoord).getChunkCoordIntPair();
                if(tileChunk.chunkXPos >= entityChunk.chunkXPos - 2 &&
                tileChunk.chunkXPos <= entity.chunkCoordX + 2 &&
                tileChunk.chunkZPos >= entity.chunkCoordZ - 2 &&
                tileChunk.chunkZPos <= entity.chunkCoordZ + 2) {
                tilesNear.add(tile);
                }
                }
                }
                }
                
                }
                
                
                
                @Mod(modid = Reference.MOD_ID, name = Reference.MOD_NAME, version = Reference.VERSION)
                public class Erderion
                {
                @SidedProxy(clientSide = Reference.CLIENT_PROXY, serverSide = Reference.SERVER_PROXY)
                public static CommonProxy proxy;
                
                @Instance
                public static Erderion instance;
                
                @EventHandler
                public void preInit(FMLPreInitializationEvent event)
                {
                BlockMod.init();
                BlockMod.register();
                
                // A placer dans BlockMod.init()
                // tileEntityFinder= new ItemTileEntityFinder() .setUnlocalizedName("chest_detector");
                // A placer dans BlockMod.register()
                // GameRegistry.registerItem(tileEntityFinder, "tileEntityFinder");
                }
                
                @EventHandler
                public void init(FMLInitializationEvent event)
                {
                proxy.registerRenders();
                }
                
                @EventHandler
                public void postInit(FMLPostInitializationEvent event)
                {
                
                }
                }
                
                ```</tileentity></tileentity></tileentity>
                1 réponse Dernière réponse Répondre Citer 0
                • C Hors-ligne
                  CensorHead
                  dernière édition par

                  Le BlockMod marche, c’est le TileEntityFinder qui ne marche pas.

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

                    Ah ok, j’ai compris comment tu procédais, c’est pas forcément la meilleur des manières c’est pas propre du tout, mais admettons :
                    Tu aurais donc :

                    
                    public class ItemTileEntityFinder extends Item {
                    
                    public static Item tileEntityFinder;
                    
                    @Override
                    public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean held) {
                    if(held) {
                    List <tileentity>tiles = world.loadedTileEntityList;
                    ArrayList <tileentity>tilesNear = new ArrayList<tileentity>();
                    ChunkCoordIntPair entityChunk = world.getChunkFromBlockCoords((int)entity.posX, (int)entity.posZ).getChunkCoordIntPair();
                    for(TileEntity tile : tiles) {
                    ChunkCoordIntPair tileChunk = world.getChunkFromBlockCoords(tile.xCoord, tile.zCoord).getChunkCoordIntPair();
                    if(tileChunk.chunkXPos >= entityChunk.chunkXPos - 2 &&
                    tileChunk.chunkXPos <= entity.chunkCoordX + 2 &&
                    tileChunk.chunkZPos >= entity.chunkCoordZ - 2 &&
                    tileChunk.chunkZPos <= entity.chunkCoordZ + 2) {
                    tilesNear.add(tile);
                    }
                    }
                    }
                    }
                    
                    public static void init()
                    {
                    tileEntityFinder= new ItemTileEntityFinder() .setUnlocalizedName("chest_detector");
                    }
                    
                    public static void register()
                    {
                    GameRegistry.registerItem(tileEntityFinder, "tileEntityFinder");
                    }
                    
                    }
                    
                    

                    Et pour ta classe principale, garde la première que tu m’as envoyée</tileentity></tileentity></tileentity>

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

                      Maintenant, le Chest Detector est réapparu mais il ne marche pas, c’est juste un item inutile.

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

                        Qui t’as dit qu’on avait terminé ? Là tu récupérer les TE autour de toi mais tu n’en fait rien, il faut les afficher maintenant … Et c’est pas le plus simple vu le design que tu veux faire …

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

                          Donc qu’est ce que je dois faire ^^

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

                            Soit tu fais envoie du serveur vers le client le nombre de TE pour qu’il l’affiche ensuite, soit tu stock ce nombre dans les tags NBT du l’objet et tu l’affiche ensuite.
                            Pour afficher, dans tous les cas tu devra passer par l’event RenderGameOverlayEvent

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

                              Alors encore plus simple : Tu décompile Paladium et tu as ta réponse, (C’est pas original si tu veux de l’originalité faut réflechir a quelque chose de jamais sortie sur le marché)
                              Hormis ça il te manque un overlay ou un chatcomponent en fonction de se qur tu veux

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

                                Uhmm … C’est bien ça mosca, dire aux gens de décompiler un autre mod pour choper les sources, laisse-le apprendre, au moins ça lui fait un peu pratiquer

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

                                  Je veux dire par la que si c’est pour copier autant bien le faire et pas demander –’ C’est pas une incitation mais une constatation

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

                                    moscaphone421, le Chest Detector à de grosses diffèrence par rapport à l’Unclaim Finder de palladium, même si les deux ont à peux près la même utilité. Et BrokenSwing, comment je fait pour faire tt ça? Pourais tu m’aider stp.

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

                                      Censor ça reste sur un principe égal, il y a des milliards d’autres façon, c’est pas comme ça que tu vas attirer du monde.
                                      Comme je l’ai toujours dis : Pourquoi allé sur ce serveur alors que l’autre a les meme choses avec du monde ?

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

                                        Il y a plus que le Chest Detector sur mon serveur, il y a beaucoup d’autres ajouts.

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

                                          J’écris un deuxième poste pour te dire :
                                          A partir de ton code il faut un event de render : RenderGameEvent il me semble que tu execute que du coter client (le serveur n’a pas d’image a afficher)
                                          Ensuite dedans tu fais un drawstring fontrender il me semble aussi
                                          Après tu draw une image ça change de 1.8.9 a 1.7.10 me semble aussi
                                          Quelques recherche forum et tu trouveras ensuite tu prends la valeur que tu as avec ton item dans la main et tu affiche dans le string qui se dessine
                                          N’oublie pas deux choses
                                          L’event ne dois etre la que lorsque tu as l’item dans la main
                                          Ne foire pas le reset en fonction des déplacement que ça ne s’ajoute pas en fonction du mouvement de ton perso

                                          Edit : sinon a la place de l’item pour te démarquer pourquoi ne pas faire un gui qui reproduit la map avec des pourcentage / chunks

                                          Ou bien une perle comme celle de l’end qui te montre le portail mais elle pointe les tiles ?

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

                                            Ok merci, mais je met tout ça où?

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

                                            MINECRAFT FORGE FRANCE © 2024

                                            Powered by NodeBB