From a99ba89586464acd48a75d259bf99576e70b678f Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Thu, 2 Apr 2020 03:39:34 -0500 Subject: [PATCH] Add configurable beehive generation chance --- .../server/WorldGenFeatureTreeBeehive.java | 18 +++++++++++++-- .../server/WorldGenTreeProvider.java | 5 +++- .../net/pl3x/purpur/PurpurWorldConfig.java | 23 +++++++++++++++++++ 3 files changed, 43 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/minecraft/server/WorldGenFeatureTreeBeehive.java b/src/main/java/net/minecraft/server/WorldGenFeatureTreeBeehive.java index 5827b1ba1a..5ef9ae16e3 100644 --- a/src/main/java/net/minecraft/server/WorldGenFeatureTreeBeehive.java +++ b/src/main/java/net/minecraft/server/WorldGenFeatureTreeBeehive.java @@ -10,7 +10,7 @@ import java.util.stream.Collectors; public class WorldGenFeatureTreeBeehive extends WorldGenFeatureTree { - private final float b; + private final float b; public float getChance() { return b; } // Purpur - OBFHELPER public WorldGenFeatureTreeBeehive(float f) { super(WorldGenFeatureTrees.d); @@ -23,7 +23,7 @@ public class WorldGenFeatureTreeBeehive extends WorldGenFeatureTree { @Override public void a(GeneratorAccess generatoraccess, Random random, List list, List list1, Set set, StructureBoundingBox structureboundingbox) { - if (random.nextFloat() < this.b) { + if (random.nextFloat() < getChance(generatoraccess.getMinecraftWorld(), list.get(0))) { EnumDirection enumdirection = BlockBeehive.a[random.nextInt(BlockBeehive.a.length)]; int i = !list1.isEmpty() ? Math.max(((BlockPosition) list1.get(0)).getY() - 1, ((BlockPosition) list.get(0)).getY()) : Math.min(((BlockPosition) list.get(0)).getY() + 1 + random.nextInt(3), ((BlockPosition) list.get(list.size() - 1)).getY()); List list2 = (List) list.stream().filter((blockposition) -> { @@ -56,6 +56,20 @@ public class WorldGenFeatureTreeBeehive extends WorldGenFeatureTree { } } + private float getChance(World world, BlockPosition position) { + BiomeBase biome = world.getBiome(position); + if (biome == Biomes.PLAINS) return world.purpurConfig.beehivesGeneratePlainsChance; + else if (biome == Biomes.SUNFLOWER_PLAINS) return world.purpurConfig.beehivesGenerateSunflowerPlainsChance; + else if (biome == Biomes.FLOWER_FOREST) return world.purpurConfig.beehivesGenerateFlowerForestChance; + else if (biome == Biomes.FOREST) return world.purpurConfig.beehivesGenerateForestChance; + else if (biome == Biomes.WOODED_HILLS) return world.purpurConfig.beehivesGenerateWoodedHillsChance; + else if (biome == Biomes.BIRCH_FOREST) return world.purpurConfig.beehivesGenerateBirchForestChance; + else if (biome == Biomes.TALL_BIRCH_FOREST) return world.purpurConfig.beehivesGenerateTallBirchForestChance; + else if (biome == Biomes.BIRCH_FOREST_HILLS) return world.purpurConfig.beehivesGenerateBirchForestHillsChance; + else if (biome == Biomes.TALL_BIRCH_HILLS) return world.purpurConfig.beehivesGenerateTallBirchHillsChance; + return getChance(); + } + @Override public T a(DynamicOps dynamicops) { return new Dynamic<>(dynamicops, dynamicops.createMap(ImmutableMap.of(dynamicops.createString("type"), dynamicops.createString(IRegistry.w.getKey(this.a).toString()), dynamicops.createString("probability"), dynamicops.createFloat(this.b)))).getValue(); // Purpur - decompile error diff --git a/src/main/java/net/minecraft/server/WorldGenTreeProvider.java b/src/main/java/net/minecraft/server/WorldGenTreeProvider.java index b9dee0e255..9e9d9e6437 100644 --- a/src/main/java/net/minecraft/server/WorldGenTreeProvider.java +++ b/src/main/java/net/minecraft/server/WorldGenTreeProvider.java @@ -31,7 +31,10 @@ public abstract class WorldGenTreeProvider { } private boolean a(GeneratorAccess generatoraccess, BlockPosition blockposition) { - Iterator iterator = BlockPosition.MutableBlockPosition.a(blockposition.down().north(2).west(2), blockposition.up().south(2).east(2)).iterator(); + // Purpur start + int r = generatoraccess.getMinecraftWorld().purpurConfig.beehivesSaplingFlowerRadius; + Iterator iterator = BlockPosition.MutableBlockPosition.a(blockposition.down().north(r).west(r), blockposition.up().south(r).east(r)).iterator(); + // Purpur end BlockPosition blockposition1; diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java index adcdc6b8f4..0347b729c0 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -99,6 +99,29 @@ public class PurpurWorldConfig { } } + public int beehivesSaplingFlowerRadius = 2; + public float beehivesGeneratePlainsChance = 0.05F; + public float beehivesGenerateSunflowerPlainsChance = 0.05F; + public float beehivesGenerateFlowerForestChance = 0.01F; + public float beehivesGenerateForestChance; + public float beehivesGenerateWoodedHillsChance; + public float beehivesGenerateBirchForestChance; + public float beehivesGenerateTallBirchForestChance; + public float beehivesGenerateBirchForestHillsChance; + public float beehivesGenerateTallBirchHillsChance; + private void beehiveSettings() { + beehivesSaplingFlowerRadius = getInt("beehive.grow-sapling-flower-check-radius", beehivesSaplingFlowerRadius); + beehivesGeneratePlainsChance = (float) getDouble("beehive.generation-chance.plains", beehivesGeneratePlainsChance); + beehivesGenerateSunflowerPlainsChance = (float) getDouble("beehive.generation-chance.sunflower-plains", beehivesGenerateSunflowerPlainsChance); + beehivesGenerateFlowerForestChance = (float) getDouble("beehive.generation-chance.flower-forest", beehivesGenerateFlowerForestChance); + beehivesGenerateForestChance = (float) getDouble("beehive.generation-chance.forest", beehivesGenerateForestChance); + beehivesGenerateWoodedHillsChance = (float) getDouble("beehive.generation-chance.wooded-hills", beehivesGenerateWoodedHillsChance); + beehivesGenerateBirchForestChance = (float) getDouble("beehive.generation-chance.birch-forest", beehivesGenerateBirchForestChance); + beehivesGenerateTallBirchForestChance = (float) getDouble("beehive.generation-chance.tall-birch-forest", beehivesGenerateTallBirchForestChance); + beehivesGenerateBirchForestHillsChance = (float) getDouble("beehive.generation-chance.birch-forest-hills", beehivesGenerateBirchForestHillsChance); + beehivesGenerateTallBirchHillsChance = (float) getDouble("beehive.generation-chance.tall-birch-hills", beehivesGenerateTallBirchHillsChance); + } + public int campfireRegenInterval = 0; public int campfireRegenDuration = 80; public int campfireRegenRange = 5; -- 2.24.0