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

    Solved Modifier la taille de mon biome

    1.11.x
    1.11.x
    2
    4
    771
    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.
    • Alexandre1156
      Alexandre1156 last edited by

      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 Reply Last reply Reply Quote 0
      • Benjamin Loison
        Benjamin Loison last edited by

        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
        TeamSpeak : ts.lemnoslife.com

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

          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 Reply Last reply Reply Quote 0
          • Benjamin Loison
            Benjamin Loison last edited by

            Penses à mettre en résolu 😉

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

            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