• S'inscrire
    • Se connecter
    • Recherche
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes

    Sens de blocs dans les structures

    Sans suite
    1.6.4
    4
    17
    4510
    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.
    • bin4r1s
      bin4r1s dernière édition par

      Bonjour,
      Ces derniers jours, j’ai commencé à bosser dans la génération de structures. Seulement voilà :
      Pour ajouter des blocs simples à la structure, pas de problème. Mais pour ce qui est des blocs comme les escaliers ou les portes etc …., il faut un code spécial. J’ai longuement cherché, et j’ai trouvé ceci (dans le code des villages, ComponentVillageHouse1, ligne 48) :

      
      int i = this.getMetadataWithOffset(Block.stairsWoodOak.blockID, 3);
      
      

      Mais je ne sais pas me servir de cette fonction et encore moins l’appliquer.
      Pouvez-vous m’aider ?

      Mes mods:

      • New Ores
      • More Dragons
      1 réponse Dernière réponse Répondre Citer 0
      • kevin_68
        kevin_68 Moddeurs confirmés dernière édition par

        Je supose que tu utilise la méthode .setBlock(…) de world pour le reste de ta structure, et bien cette méthode est surchargée, donc tu peux lui ajouté les arguments Int metadata, int flag pour le metadata, et donc l’orientation des escaliers par exemple.
        Exemple:

        
        world.setBlock(x, y, z, blockID, metadata, flag);
        
        

        Pour le flag:
        0 = rien
        2 = mise à jour de bloc
        Après le reste je ne sais plus


        Mettez à jours vers la dernière version stable (1.8.9 voir même…

        1 réponse Dernière réponse Répondre Citer 0
        • bin4r1s
          bin4r1s dernière édition par

          D’accord, merci j’essaie
          PS : Par contre quelqu’un connaîtrait une liste où sont répertoriés les flags correspondants à l’orientation ?___Et tant qu’on y est, au lieu de créer un nouveau topic, j’ai une autre question :
          Comment intégrer des objets à l’intérieur d’un coffre généré ?
          J’ai déjà fait la génération aléatoire de l’ItemStack et celle du coffre. Il me manque juste l’intégration des objets au coffre.

          Mes mods:

          • New Ores
          • More Dragons
          1 réponse Dernière réponse Répondre Citer 0
          • kevin_68
            kevin_68 Moddeurs confirmés dernière édition par

            Pour une génération aléatoire des items tu peux utilisé le système de forge:

            
            world.setBlock(x + 3, y + 1, z + 5, Block.chest.blockID, 5, 2);
            
            TileEntityChest tileentitychest = (TileEntityChest)world.getBlockTileEntity(x + 3, y + 1, z + 5);
            
            if(tileentitychest != null)
            {
            ChestGenHooks info = ChestGenHooks.getInfo(ChestGenHooks.VILLAGE_BLACKSMITH);
            WeightedRandomChestContent.generateChestContents(rand, info.getItems(rand), tileentitychest, info.getCount(rand));
            }
            
            

            Après, pour un item donné:

            
            world.setBlock(x + 3, y + 1, z + 5, Block.chest.blockID, 5, 2);
            
            TileEntityChest tileentitychest = (TileEntityChest)world.getBlockTileEntity(x + 3, y + 1, z + 5);
            tileentitychest.setInventorySlotContents(slot, ItemStack)
            
            


            Mettez à jours vers la dernière version stable (1.8.9 voir même…

            1 réponse Dernière réponse Répondre Citer 0
            • bin4r1s
              bin4r1s dernière édition par

              C’est la méthode

              
              tileentitychest.setInventorySlotContents(slot, ItemStack)
              
              

              qui permet d’insérer les items ?
              Je suppose que si c’est le cas on peut la répéter plusieurs fois pour mettre plusieurs items dans le coffre ?

              Mes mods:

              • New Ores
              • More Dragons
              1 réponse Dernière réponse Répondre Citer 0
              • kevin_68
                kevin_68 Moddeurs confirmés dernière édition par

                Oui c’est ça.


                Mettez à jours vers la dernière version stable (1.8.9 voir même…

                1 réponse Dernière réponse Répondre Citer 0
                • bin4r1s
                  bin4r1s dernière édition par

                  Ok merci :), Sujet résolu

                  EDIT : Ah ben non en fait .
                  Quand ma structure se génère, le coffre qui est dedans contient toujours le même item.

                  Le code (dans MinerHouse1) :

                  
                  private ItemStack getLoot(Random rand)
                  {
                  int loot = rand.nextInt(10);
                  int speLootA = rand.nextInt(8);
                  int speLootO = rand.nextInt(10);
                  int speLootDB = rand.nextInt(5);
                  int speLootEB = rand.nextInt(10);
                  ItemStack stack = null;
                  switch(loot)
                  {
                  case 0:
                  stack = new ItemStack(Item.diamond);
                  case 1:
                  if(speLootDB == 0)
                  {
                  stack = new ItemStack(Block.blockDiamond);
                  }
                  else if(speLootEB == 0)
                  {
                  stack = new ItemStack(Block.blockEmerald);
                  }
                  case 2:
                  stack = new ItemStack(Item.bread);
                  case 3:
                  if(speLootA == 0)
                  {
                  stack = new ItemStack(Basic.copperHelmet);
                  }
                  else if(speLootA == 1)
                  {
                  stack = new ItemStack(Basic.copperPlate);
                  }
                  else if(speLootA == 2)
                  {
                  stack = new ItemStack(Basic.copperBoots);
                  }
                  else if(speLootA == 3)
                  {
                  stack = new ItemStack(Basic.tinHelmet);
                  }
                  else if(speLootA == 4)
                  {
                  stack = new ItemStack(Basic.tinPlate);
                  }
                  else if(speLootA == 5)
                  {
                  stack = new ItemStack(Basic.tinBoots);
                  }
                  else if(speLootA == 6)
                  {
                  stack = new ItemStack(Basic.manganeseHelmet);
                  }
                  else if(speLootA == 7)
                  {
                  stack = new ItemStack(Basic.manganesePlate);
                  }
                  else
                  {
                  stack = new ItemStack(Basic.manganeseBoots);
                  }
                  case 4:
                  if(speLootO == 0)
                  {
                  stack = new ItemStack(Basic.copperPickaxe);
                  }
                  else if(speLootO == 1)
                  {
                  stack = new ItemStack(Basic.copperShovel);
                  }
                  else if(speLootO == 2)
                  {
                  stack = new ItemStack(Basic.copperSword);
                  }
                  else if(speLootO == 3)
                  {
                  stack = new ItemStack(Basic.tinPickaxe);
                  }
                  else if(speLootO == 4)
                  {
                  stack = new ItemStack(Basic.tinShovel);
                  }
                  else if(speLootO == 5)
                  {
                  stack = new ItemStack(Basic.tinSword);
                  }
                  else if(speLootO == 6)
                  {
                  stack = new ItemStack(Basic.manganesePickaxe);
                  }
                  else if(speLootO == 7)
                  {
                  stack = new ItemStack(Basic.manganeseAxe);
                  }
                  else if(speLootO == 8)
                  {
                  stack = new ItemStack(Basic.manganeseSword);
                  }
                  else if(speLootO == 9)
                  {
                  stack = new ItemStack(Item.pickaxeDiamond);
                  }
                  else if(speLootO == 10)
                  {
                  stack = new ItemStack(Item.pickaxeIron);
                  }
                  case 5:
                  stack = new ItemStack(Item.emerald);
                  case 6:
                  stack = new ItemStack(Basic.manganeseIngot);
                  case 7:
                  stack = new ItemStack(Basic.copperIngot);
                  case 8:
                  stack = new ItemStack(Basic.tinIngot);
                  case 9:
                  stack = new ItemStack(Block.blockGold);
                  case 10:
                  // Nothing
                  }
                  return stack;
                  }
                  
                  // Chest Content
                  TileEntityChest tileentitychest = (TileEntityChest)world.getBlockTileEntity(x + 2, y + 1, z + 2);
                  tileentitychest.setInventorySlotContents(2, this.getLoot(rand));
                  tileentitychest.setInventorySlotContents(7, this.getLoot(rand));
                  tileentitychest.setInventorySlotContents(13, this.getLoot(rand));
                  tileentitychest.setInventorySlotContents(19, this.getLoot(rand));
                  tileentitychest.setInventorySlotContents(23, this.getLoot(rand));
                  
                  

                  Mes mods:

                  • New Ores
                  • More Dragons
                  1 réponse Dernière réponse Répondre Citer 0
                  • bin4r1s
                    bin4r1s dernière édition par

                    Up
                    De l’aide svp 😞

                    Mes mods:

                    • New Ores
                    • More Dragons
                    1 réponse Dernière réponse Répondre Citer 0
                    • robin4002
                      robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

                      Il contient quel item précisément ?

                      1 réponse Dernière réponse Répondre Citer 0
                      • bin4r1s
                        bin4r1s dernière édition par

                        C’est choisi aléatoirement avec le switch de getLoot()
                        Après c’est inséré dans le coffre (vide au départ)

                        Mes mods:

                        • New Ores
                        • More Dragons
                        1 réponse Dernière réponse Répondre Citer 0
                        • robin4002
                          robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

                          @‘MrBlockTNT’:

                          le coffre qui est dedans contient toujours le même item.

                          J’aimerai savoir quel est l’item qui se génère toujours afin de comprendre pourquoi le random ne fonctionne pas.

                          1 réponse Dernière réponse Répondre Citer 0
                          • bin4r1s
                            bin4r1s dernière édition par

                            Le bloc d’or
                            J’en profite pour dire que (je viens de m’en rendre compte, car je viens de l’ajouter) la porte est bugguée :
                            :::

                            :::
                            Code :

                            
                            world.setBlock(x + 4, y + 1, z + 2, Block.doorWood.blockID, 0, 4);
                            world.setBlock(x + 4, y + 2, z + 2, Block.doorWood.blockID, 0, 4);
                            
                            

                            Mes mods:

                            • New Ores
                            • More Dragons
                            1 réponse Dernière réponse Répondre Citer 0
                            • robin4002
                              robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

                              J’ai compris ton problème. Il faut que tu break, car actuellement il lit toutes les cases sans s’arrêter :

                              private ItemStack getLoot(Random rand)
                              {
                              int loot = rand.nextInt(10);
                              int speLootA = rand.nextInt(8);
                              int speLootO = rand.nextInt(10);
                              int speLootDB = rand.nextInt(5);
                              int speLootEB = rand.nextInt(10);
                              ItemStack stack = null;
                              switch(loot)
                              {
                              case 0:
                              stack = new ItemStack(Item.diamond);
                              break;
                              case 1:
                              if(speLootDB == 0)
                              {
                              stack = new ItemStack(Block.blockDiamond);
                              }
                              else if(speLootEB == 0)
                              {
                              stack = new ItemStack(Block.blockEmerald);
                              }
                              break;
                              case 2:
                              stack = new ItemStack(Item.bread);
                              break;
                              case 3:
                              if(speLootA == 0)
                              {
                              stack = new ItemStack(Basic.copperHelmet);
                              }
                              else if(speLootA == 1)
                              {
                              stack = new ItemStack(Basic.copperPlate);
                              }
                              else if(speLootA == 2)
                              {
                              stack = new ItemStack(Basic.copperBoots);
                              }
                              else if(speLootA == 3)
                              {
                              stack = new ItemStack(Basic.tinHelmet);
                              }
                              else if(speLootA == 4)
                              {
                              stack = new ItemStack(Basic.tinPlate);
                              }
                              else if(speLootA == 5)
                              {
                              stack = new ItemStack(Basic.tinBoots);
                              }
                              else if(speLootA == 6)
                              {
                              stack = new ItemStack(Basic.manganeseHelmet);
                              }
                              else if(speLootA == 7)
                              {
                              stack = new ItemStack(Basic.manganesePlate);
                              }
                              else
                              {
                              stack = new ItemStack(Basic.manganeseBoots);
                              }
                              break;
                              case 4:
                              […]
                              

                              Et pour la porte, je sais pas, essaye avec un autre métadata pour le bloc du haut.

                              1 réponse Dernière réponse Répondre Citer 0
                              • bin4r1s
                                bin4r1s dernière édition par

                                Ah oui, merci j’avais complètement oublié ^^’
                                Sinon je peux avoir de l’aide pour la porte ?

                                EDIT : D’accord j’essaie merci (pour la porte)

                                DOUBLE EDIT : J’ai essayé avec d’autres metadata, rien ne marche 😞

                                Mes mods:

                                • New Ores
                                • More Dragons
                                1 réponse Dernière réponse Répondre Citer 0
                                • bin4r1s
                                  bin4r1s dernière édition par

                                  De l’aide Svp 😞

                                  Mes mods:

                                  • New Ores
                                  • More Dragons
                                  1 réponse Dernière réponse Répondre Citer 0
                                  • utybo
                                    utybo dernière édition par

                                    Regarde dans la génération des villages pour la porte(?)

                                    Moddeur à la retraite et développeur de trucs en Java.

                                    J'aide les gens comme je peux, alors si mon message v…

                                    1 réponse Dernière réponse Répondre Citer 0
                                    • bin4r1s
                                      bin4r1s dernière édition par

                                      @utybo
                                      J’ai déjà regardé, c’était dit au début.

                                      Après avoir longuement cherché, je n’ai rien trouvé, et j’ai même fini par réussir à empêcher la génération de mes structures (comment ?)

                                      Mes mods:

                                      • New Ores
                                      • More Dragons
                                      1 réponse Dernière réponse Répondre Citer 0
                                      • 1 / 1
                                      • Premier message
                                        Dernier message
                                      Design by Woryk
                                      Contact / Mentions Légales

                                      MINECRAFT FORGE FRANCE © 2018

                                      Powered by NodeBB