MFF

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

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

    Planifier Épinglé Verrouillé Déplacé Résolu 1.11.x
    1.11.x
    4 Messages 3 Publieurs 935 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.
    • DylemD Hors-ligne
      Dylem
      dernière édition par

      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 réponse Dernière réponse Répondre Citer 0
      • robin4002R Hors-ligne
        robin4002 Moddeurs confirmés Rédacteurs Administrateurs
        dernière édition par

        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 réponse Dernière réponse Répondre Citer 0
        • DeletedD Hors-ligne
          Deleted
          dernière édition par

          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 réponse Dernière réponse Répondre Citer 0
          • DylemD Hors-ligne
            Dylem
            dernière édition par

            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 réponse Dernière réponse Répondre Citer 0
            • 1 / 1
            • Premier message
              Dernier message
            Design by Woryk
            ContactMentions Légales

            MINECRAFT FORGE FRANCE © 2024

            Powered by NodeBB