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

                                    Les events ? Dans la classe que tu veux il faut juste créer un objet où il y a les fonctions voulues. Personnellement je te conseille de créer une classe à part

                                    Site web contenant mes scripts : http://SCAREXgaming.github.io

                                    Pas de demandes de support par MP ni par skype SVP.
                                    Je n'accepte sur skype que l…

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

                                      @‘BrokenSwing’:

                                      Tu as la classe de ton Item prête ? (Item qui ne fait rien pour le moment)
                                      Si c’est le cas, tu override la méthode onUpdate, ce qui revient à ré-écrire la fonction onUpdate dans la classe de ton Item :

                                      
                                      public ClassDeTonItem extends Item {
                                      
                                         //Ici tu as peut-être ton constructeur, je ne le met pas ici, c'est pas obligatoire, si tu l'as garde le
                                      
                                         @Override
                                         public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean held) { //Il me semble que les argument correspondent à ça, j'ai pas les bon mapping
                                             if(held) {    //Si le joueur a l'objet dans sa main
                                                 //Ici grâce à l'argument world tu peux récupérer les TE du monde qui sont, attention, chargées, si tu veux aussi avoir accès à celles qui ne sont pas chargées, tu vas devoir utiliser la réfléction
                                                 List <tileentity>tiles = world.loadedTileEntityList; //Import java.util.List
                                                 ArrayList <tileentity>tilesNear = new ArrayList<tileentity>(); //On va y stocker les TE proches
                                                 ChunkCoordIntPair entityChunk = world.getChunkFromBlockCoords((int)entity.posX, (int)entity.posZ).getChunkCoordIntPair(); //Les coordonnées de chunk du joueur
                                         for(TileEntity tile : tiles) {
                                      ChunkCoordIntPair tileChunk = world.getChunkFromBlockCoords(tile.xCoord, tile.zCoord).getChunkCoordIntPair(); //Les coordonnées de chunk de la TE
                                      if(tileChunk.chunkXPos >= entityChunk.chunkXPos - 2 &&
                                      tileChunk.chunkXPos <= entity.chunkCoordX + 2 &&
                                      tileChunk.chunkZPos >= entity.chunkCoordZ - 2 &&
                                      tileChunk.chunkZPos <= entity.chunkCoordZ + 2) {
                                      tilesNear.add(tile);
                                      }
                                      }
                                             }
                                         }
                                      
                                      ```</tileentity></tileentity></tileentity>
                                      

                                      Bonjour, j’aimerais utiliser ceci mais j’aimerais savoir dans quelle variable est stocké le nombre de TE et si il n’y en a pas ce que je dois mettre pour en avoir une. Merci

                                      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