• Register
    • Login
    • Search
    • Recent
    • Tags
    • Popular
    • Users
    • Groups

    Solved Ajouter un élément à une structure d'un village

    1.11.x
    1.11.x
    3
    4
    795
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Dylem
      Dylem last edited by

      Salut,

      Je me remets gentiment au modding et pour commencer j’ai fait rapidement une nouvelle structure dans un village.

      En reprenant le code de  StructureVillagePieces.Village.House1 dans mon fichier Component, je génère par exemple ici un cube 4x4 de blocks de diamants:

      package net.dylem.styx.world;
      
      import java.util.List;
      import java.util.Random;
      
      import net.minecraft.init.Blocks;
      import net.minecraft.util.EnumFacing;
      import net.minecraft.world.World;
      import net.minecraft.world.gen.structure.StructureBoundingBox;
      import net.minecraft.world.gen.structure.StructureComponent;
      import net.minecraft.world.gen.structure.StructureVillagePieces;
      
      public class ComponentHouseCellar extends StructureVillagePieces.Village {
      
      public ComponentHouseCellar() {
      
      }
      
      public ComponentHouseCellar(StructureVillagePieces.Start start, int type, Random rand, StructureBoundingBox sbb, EnumFacing facing) {
      
             super(start, type);
             this.setCoordBaseMode(facing);
             this.boundingBox = sbb;
         }
      
      public static ComponentHouseCellar createPiece(StructureVillagePieces.Start start, List <structurecomponent>comps, Random rand, int p1, int p2, int p3, EnumFacing facing, int p5){
      
      StructureBoundingBox structureboundingbox = StructureBoundingBox.getComponentToAddBoundingBox(p1, p2, p3, 0, 0, 0, 3, 3, 3, facing);
             return canVillageGoDeeper(structureboundingbox) && StructureComponent.findIntersecting(comps, structureboundingbox) == null ? new ComponentHouseCellar(start, p5, rand, structureboundingbox, facing) : null;
         }
      
      @Override
      public boolean addComponentParts(World worldIn, Random randomIn, StructureBoundingBox sbbIn) {
      
      if (this.averageGroundLvl < 0)
             {
                 this.averageGroundLvl = this.getAverageGroundLevel(worldIn, sbbIn);
      
                 if (this.averageGroundLvl < 0)
                 {
                     return true;
                 }
      
                 this.boundingBox.offset(0, this.averageGroundLvl - this.boundingBox.maxY + 12 - 1, 0);
             }
      
      this.fillWithBlocks(worldIn, sbbIn, 0, 0, 0, 3, 3, 3, Blocks.DIAMOND_BLOCK.getDefaultState(), Blocks.DIAMOND_BLOCK.getDefaultState(), false);
      
      return true;
      }
      }
      

      Minecraft fait donc spawn ma structure dans un nouvel emplacement du village, cependant je voudrais plutôt modifier une structure d’une maison pré-éxistante plutôt qu’en faire une nouvelle (rajouter un block dans une des maisons par exemple).

      Une idée ?  :X</structurecomponent>

      Si je t'ai aidé, n'hésite pas à cliquer sur le nombre vert en dessous de mon image de profil, pour me le faire savoir. Ca me motive pour continuer …

      1 Reply Last reply Reply Quote 0
      • robin4002
        robin4002 Moddeurs confirmés Rédacteurs Administrateurs last edited by

        Salut,
        Pour le code en couleur il faut utiliser la balise java (comme expliqué dans le règlement de la section au passage).

        Pour la structure je ne sais pas, faudrait regarder si forge à des fonctions / event pour.

        1 Reply Last reply Reply Quote 0
        • Deleted
          Deleted last edited by

          Salut,
          soit class transformer pour modifier et rajouter ton block dans la class concernée, ou alors retirer la “maison” qui te pose problème, et rajouter une custom à l’identique, mais qui posséderait ton nouveau block. La seconde solution est sûrement la + facile.

          1 Reply Last reply Reply Quote 0
          • Dylem
            Dylem last edited by

            Salut,
            Pour le code en couleur il faut utiliser la balise java (comme expliqué dans le règlement de la section au passage).

            Pour la structure je ne sais pas, faudrait regarder si forge à des fonctions / event pour.

            Oui j’ai vu, j’ai modifié mon message pour la couleur.
            Sinon je n’ai pas vu d’event correspondant à la création du village.

            Salut,

            soit class transformer pour modifier et rajouter ton block dans la class concernée, ou alors retirer la “maison” qui te pose problème, et rajouter une custom à l’identique, mais qui posséderait ton nouveau block. La seconde solution est sûrement la + facile.

            Oui c’est ce que je me suis dit, je rajoute une maisons identique à celles éxistantes avec mon bloc à l’intérieur mais je me demandais s’il n’y avait pas de moyen plus simple. 
            Sinon, peut-être que je peux directement appeler createPiece de House1, House2 ou House3 aléatoirement puis ajouter mon bloc en utilisant la position ? Je vais essayer et je reviens vers vous.


            Bon, au final j’ai fais en sorte que mon Component hérite de house1, puis j’ai call :

            super.addComponentParts(worldIn, randomIn, sbbIn);
            

            Pour que la maison spawn avant de rajouter des choses dedans.

            Je passe en résolu 🙂

            Si je t'ai aidé, n'hésite pas à cliquer sur le nombre vert en dessous de mon image de profil, pour me le faire savoir. Ca me motive pour continuer …

            1 Reply Last reply Reply Quote 0
            • 1 / 1
            • First post
              Last post
            Design by Woryk
            Contact / Mentions Légales

            MINECRAFT FORGE FRANCE © 2018

            Powered by NodeBB