MFF

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

    Modifier la taille de mon biome

    Planifier Épinglé Verrouillé Déplacé Résolu 1.11.x
    1.11.x
    4 Messages 2 Publieurs 1.3k 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.
    • Alexandre1156A Hors-ligne
      Alexandre1156
      dernière édition par

      Salut,

      Je voudrais savoir s’il est possible de modifier la taille de biome afin qu’il soit petit (disons environ 3x3 chunks).
      J’ai regardé la variable BiomeSize dans les mondes customisés mais je n’ai pas réussi à trouver un lien avec la génération :s.

      Merci !

      1 réponse Dernière réponse Répondre Citer 0
      • Benjamin LoisonB Hors-ligne
        Benjamin Loison
        dernière édition par

        Cherches sur internet ou regardes le code source de Minecraft comme je l’ai dit dans mes précédents messages (visible sur mon profil)

        >! Développeur de Altis-Life (Arma III) sur Minecraft !
        >! Site web     : https://lemnoslife.com

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

          J’avais complètement oublié ce sujet 😮
          Finalement, j’ai utilisé une structure, c’est peut-être mieux comme ça, puis le fait qu’un biome soit très petit aurait peut-être causé des soucis de générations.
          Voici le code actuel pour ceux que ça intéresse :
          :::

          
          package fr.alexandre1156.mushpowers.structure;
          
          import java.util.ArrayList;
          import java.util.Random;
          
          import com.google.common.collect.Lists;
          
          import fr.alexandre1156.mushpowers.bushs.BushMush;
          import fr.alexandre1156.mushpowers.proxy.CommonProxy;
          import net.minecraft.block.Block;
          import net.minecraft.block.BlockStaticLiquid;
          import net.minecraft.init.Biomes;
          import net.minecraft.init.Blocks;
          import net.minecraft.util.math.BlockPos;
          import net.minecraft.world.World;
          import net.minecraft.world.biome.Biome;
          import net.minecraft.world.gen.feature.WorldGenBigMushroom;
          import net.minecraft.world.gen.feature.WorldGenerator;
          
          public class WorldGenMushPower extends WorldGenerator {
          
          @Override
          public boolean generate(World world, Random rand, BlockPos pos) {
          if(this.isBiomeCorrect(Biome.getIdForBiome(world.getBiome(pos)))){
          ArrayList <blockpos>list = Lists.<blockpos>newArrayList();
          for(int x = 0; x < 16; x++){
          for(int z = 0; z < 16; z++){
          BlockPos blockPos = new BlockPos(pos.getX()+x, pos.getY(), pos.getZ()+z);
          if(!this.isOnSurface(blockPos, world)){
          blockPos = this.setAtSurface(blockPos, world);
          if(blockPos == null)
          return false;
          else
          list.add(new BlockPos(blockPos.getX(), blockPos.getY(), blockPos.getZ()));
          } else
          list.add(new BlockPos(blockPos.getX(), blockPos.getY(), blockPos.getZ()));
          }
          }
          for(BlockPos pos2 : list) {
          BlockPos upperPos = new BlockPos(pos2.getX(), pos2.getY()+1, pos2.getZ());
          if(this.needRemoved(upperPos, world))
          world.setBlockToAir(upperPos);
          int xAdded = Math.abs(pos2.getX()-pos.getX());
          int zAdded = Math.abs(pos2.getZ()-pos.getZ());
          
          if(this.isFirstLayer(xAdded, zAdded)){
          if(rand.nextInt(4) == 0)
          world.setBlockState(pos2, Blocks.MYCELIUM.getDefaultState());
          } else if(this.isSecondLayer(xAdded, zAdded)){
          if(rand.nextInt(3) == 0)
          world.setBlockState(pos2, Blocks.MYCELIUM.getDefaultState());
          } else if(this.isThirdLayer(xAdded, zAdded)){
          if(rand.nextBoolean())
          world.setBlockState(pos2, Blocks.MYCELIUM.getDefaultState());
          } else {
          world.setBlockState(pos2, Blocks.MYCELIUM.getDefaultState());
          }
          if(rand.nextInt(15) == 0)
          (new WorldGenBigMushroom(Blocks.RED_MUSHROOM_BLOCK)).generate(world, rand, upperPos);
          if(rand.nextInt(5) == 0 /*&& Block.isEqualTo(world.getBlockState(pos).getBlock(), Blocks.MYCELIUM)*/)
          this.generateRandomMushPowerBush(upperPos, rand, world);
          }
          return true;
          }
          return false;
          }
          
          private boolean isFirstLayer(int xAdded, int zAdded){
          return xAdded == 0 ? true : xAdded > 0 && xAdded < 15 ? zAdded == 0 || zAdded == 15 ? true : false : xAdded == 15 ? true : false;
          }
          
          private boolean isSecondLayer(int xAdded, int zAdded) {
          return xAdded == 1 ? zAdded > 0 && zAdded < 15 ? true : false : xAdded > 1 && xAdded < 14 ? zAdded == 1 || zAdded == 14 ? true : false : xAdded == 14 ? zAdded > 0 && zAdded < 15 ? true : false : false;
          }
          
          private boolean isThirdLayer(int xAdded, int zAdded) {
          return xAdded == 2 ? zAdded > 1 && zAdded < 14 ? true : false : xAdded > 2 && xAdded < 13 ? zAdded == 2 || zAdded == 13 ? true : false : xAdded == 13 ? zAdded > 1 && zAdded < 14 ? true : false : false;
          }
          
          private void generateRandomMushPowerBush(BlockPos pos, Random rand, World world){
          this.generateMushPowerBush(pos, world, CommonProxy.getBushs().get(rand.nextInt(CommonProxy.getBushs().size()-1)));
          }
          
          private void generateMushPowerBush(BlockPos pos, World world, BushMush bush) {
          if (world.isAirBlock(pos) && (!world.provider.hasSkyLight() || pos.getY() < world.getHeight() - 1) 
          && bush.canBlockStay(world, pos, bush.getDefaultState()))
          world.setBlockState(pos, bush.getDefaultState(), 2);
          //1.12 : Si mush bug, enlever ! avant hasSkyLight()
          }
          
          private boolean isOnSurface(BlockPos pos, World world) {
          if(world.isAirBlock(pos) || !this.isSurfaceBlockCompatible(world.getBlockState(pos).getBlock()))
          return false;
          BlockPos underground = new BlockPos(pos.getX(), pos.getY()-1, pos.getZ());
          if(world.isAirBlock(underground) || !this.isSurfaceBlockCompatible(world.getBlockState(underground).getBlock()))
          return false;
          for(int height = 1; height+pos.getY() <= 256; height++){
          if(!world.isAirBlock(pos) || !this.isSurfaceBlockCompatible(world.getBlockState(new BlockPos(pos.getX(), pos.getY()+height, pos.getZ())).getBlock()))
          return false;
          }
          return true;
          }
          
          private BlockPos setAtSurface(BlockPos actualPos, World world){
          for(int i = 256; i > 0; i–){ //Need at least 7 layers
          BlockPos pos2 = new BlockPos(actualPos.getX(), i, actualPos.getZ());
          if(this.isSurfaceBlockCompatible(world.getBlockState(pos2).getBlock()) && !world.isAirBlock(pos2)){
          if(i >= 249 || world.getBlockState(new BlockPos(pos2.getX(), pos2.getY()+1, pos2.getZ())).getBlock() instanceof BlockStaticLiquid) {
          pos2 = null;
          actualPos = null;
          break;
          }
          actualPos = pos2;
          break;
          }
          if(i == 1)
          actualPos = null;
          }
          return actualPos;
          }
          
          private boolean isSurfaceBlockCompatible(Block block){
          return Block.isEqualTo(block, Blocks.LEAVES) ? false : Block.isEqualTo(block, Blocks.LEAVES2) ? false : 
          Block.isEqualTo(block, Blocks.TALLGRASS) ? false : Block.isEqualTo(block, Blocks.WATER) ? false : Block.isEqualTo(block, Blocks.LAVA) ? false : 
          Block.isEqualTo(block, Blocks.SNOW_LAYER) ? false : Block.isEqualTo(block, Blocks.RED_FLOWER) ? false :
          Block.isEqualTo(block, Blocks.YELLOW_FLOWER) ? false : Block.isEqualTo(block, Blocks.DEADBUSH) ? false :
          Block.isEqualTo(block, Blocks.SAPLING) ? false : Block.isEqualTo(block, Blocks.BROWN_MUSHROOM) ? false :
          Block.isEqualTo(block, Blocks.RED_MUSHROOM) ? false : Block.isEqualTo(block, Blocks.RED_MUSHROOM_BLOCK) ? false : 
          Block.isEqualTo(block, Blocks.BROWN_MUSHROOM_BLOCK) ? false : block instanceof BushMush ? false : 
          Block.isEqualTo(block, Blocks.VINE) ? false : Block.isEqualTo(block, Blocks.REEDS) ? false : Block.isEqualTo(block, Blocks.WATERLILY) ? false : 
          Block.isEqualTo(block, Blocks.DOUBLE_PLANT) ? false : Block.isEqualTo(block, Blocks.LOG) ? false : Block.isEqualTo(block, Blocks.LOG2) ? false : true;
          }
          
          private boolean needRemoved(BlockPos posUpper, World world){
          Block block = world.getBlockState(posUpper).getBlock();
          return Block.isEqualTo(block, Blocks.TALLGRASS) ? true : Block.isEqualTo(block, Blocks.SNOW_LAYER) ? true : 
          Block.isEqualTo(block, Blocks.RED_FLOWER) ? true : Block.isEqualTo(block, Blocks.YELLOW_FLOWER) ? true : 
          Block.isEqualTo(block, Blocks.DEADBUSH) ? true : Block.isEqualTo(block, Blocks.SAPLING) ? true : 
          Block.isEqualTo(block, Blocks.BROWN_MUSHROOM) ? false : Block.isEqualTo(block, Blocks.RED_MUSHROOM) ? true : 
          Block.isEqualTo(block, Blocks.VINE) ? true : Block.isEqualTo(block, Blocks.REEDS) ? true : 
          Block.isEqualTo(block, Blocks.WATERLILY) ? true : Block.isEqualTo(block, Blocks.DOUBLE_PLANT) ? true : 
          block instanceof BushMush ? true : false;
          }
          
          private boolean isBiomeCorrect(int biomeID){
          return biomeID != Biome.getIdForBiome(Biomes.DEEP_OCEAN) && biomeID != Biome.getIdForBiome(Biomes.EXTREME_HILLS)
          && biomeID != Biome.getIdForBiome(Biomes.EXTREME_HILLS_EDGE) && biomeID != Biome.getIdForBiome(Biomes.EXTREME_HILLS_WITH_TREES)
          && biomeID != Biome.getIdForBiome(Biomes.MUTATED_EXTREME_HILLS) && biomeID != Biome.getIdForBiome(Biomes.MUTATED_EXTREME_HILLS_WITH_TREES)
          && biomeID != Biome.getIdForBiome(Biomes.HELL) && biomeID != Biome.getIdForBiome(Biomes.JUNGLE)
          && biomeID != Biome.getIdForBiome(Biomes.JUNGLE_EDGE) && biomeID != Biome.getIdForBiome(Biomes.JUNGLE_HILLS)
          && biomeID != Biome.getIdForBiome(Biomes.MUTATED_JUNGLE) && biomeID != Biome.getIdForBiome(Biomes.MUTATED_JUNGLE_EDGE)
          && biomeID != Biome.getIdForBiome(Biomes.OCEAN) && biomeID != Biome.getIdForBiome(Biomes.SKY)
          && biomeID != Biome.getIdForBiome(Biomes.VOID);
          }
          
          }
          
          

          :::</blockpos></blockpos>

          1 réponse Dernière réponse Répondre Citer 0
          • Benjamin LoisonB Hors-ligne
            Benjamin Loison
            dernière édition par

            Penses à mettre en résolu 😉

            >! Développeur de Altis-Life (Arma III) sur Minecraft !
            >! Site web     : https://lemnoslife.com

            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