From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jason Penilla <11360596+jpenilla@users.noreply.github.com> Date: Fri, 3 Dec 2021 17:09:24 -0800 Subject: [PATCH] Fix Spigot growth modifiers Fixes kelp modifier changing growth for other crops Also add growth modifiers for glow berries, mangrove propagules, torchflower crops and pitcher plant crops Also fix above-mentioned modifiers from having the reverse effect Co-authored-by: Jake Potrebic Co-authored-by: Noah van der Aa Co-authored-by: Lulu13022002 <41980282+Lulu13022002@users.noreply.github.com> diff --git a/src/main/java/net/minecraft/world/level/block/CaveVinesBlock.java b/src/main/java/net/minecraft/world/level/block/CaveVinesBlock.java index ec1a3812d866021a4b746c95097ca1754f03de61..9229b1ca57264a377576eb4060436ee61d3032d6 100644 --- a/src/main/java/net/minecraft/world/level/block/CaveVinesBlock.java +++ b/src/main/java/net/minecraft/world/level/block/CaveVinesBlock.java @@ -47,9 +47,17 @@ public class CaveVinesBlock extends GrowingPlantHeadBlock implements Bonemealabl @Override protected BlockState getGrowIntoState(BlockState state, RandomSource random) { - return super.getGrowIntoState(state, random).setValue(BERRIES, Boolean.valueOf(random.nextFloat() < 0.11F)); + // Paper start + return this.getGrowIntoState(state, random, null); } + @Override + protected BlockState getGrowIntoState(BlockState state, RandomSource random, @javax.annotation.Nullable Level level) { + final boolean value = random.nextFloat() < (level != null ? (0.11F * (level.spigotConfig.glowBerryModifier / 100.0F)) : 0.11F); + return (BlockState) super.getGrowIntoState(state, random).setValue(CaveVinesBlock.BERRIES, value); + } + // Paper end + @Override public ItemStack getCloneItemStack(BlockGetter world, BlockPos pos, BlockState state) { return new ItemStack(Items.GLOW_BERRIES); diff --git a/src/main/java/net/minecraft/world/level/block/CropBlock.java b/src/main/java/net/minecraft/world/level/block/CropBlock.java index c5608f72a8f2ad2640f32fa63c69a6ef69d746da..6365ddea0c23bc5d4009d98915f2b39aed2a0328 100644 --- a/src/main/java/net/minecraft/world/level/block/CropBlock.java +++ b/src/main/java/net/minecraft/world/level/block/CropBlock.java @@ -84,6 +84,10 @@ public class CropBlock extends BushBlock implements BonemealableBlock { modifier = world.spigotConfig.carrotModifier; } else if (this == Blocks.POTATOES) { modifier = world.spigotConfig.potatoModifier; + // Paper start + } else if (this == Blocks.TORCHFLOWER_CROP) { + modifier = world.spigotConfig.torchFlowerModifier; + // Paper end } else { modifier = world.spigotConfig.wheatModifier; } diff --git a/src/main/java/net/minecraft/world/level/block/GrowingPlantHeadBlock.java b/src/main/java/net/minecraft/world/level/block/GrowingPlantHeadBlock.java index d123f476ce2573bf3b5ee964cf515e9b07c60cec..b325fdec8eb99ce57152a5c0fefa5059685276e4 100644 --- a/src/main/java/net/minecraft/world/level/block/GrowingPlantHeadBlock.java +++ b/src/main/java/net/minecraft/world/level/block/GrowingPlantHeadBlock.java @@ -56,12 +56,18 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements BlockPos blockposition1 = pos.relative(this.growthDirection); if (this.canGrowInto(world.getBlockState(blockposition1))) { - org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockSpreadEvent(world, pos, blockposition1, this.getGrowIntoState(state, world.random)); // CraftBukkit + org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockSpreadEvent(world, pos, blockposition1, this.getGrowIntoState(state, world.random, world)); // CraftBukkit // Paper } } } + // Paper start + protected BlockState getGrowIntoState(BlockState state, RandomSource random, @javax.annotation.Nullable Level level) { + return this.getGrowIntoState(state, random); + } + // Paper end + protected BlockState getGrowIntoState(BlockState state, RandomSource random) { return (BlockState) state.cycle(GrowingPlantHeadBlock.AGE); } diff --git a/src/main/java/net/minecraft/world/level/block/MangrovePropaguleBlock.java b/src/main/java/net/minecraft/world/level/block/MangrovePropaguleBlock.java index 82db5e4d1c1d371a5d1a09b6249d8cbeb2e6dd08..82b02e53ea6f0dc0540c874c29173bfdcf48f05b 100644 --- a/src/main/java/net/minecraft/world/level/block/MangrovePropaguleBlock.java +++ b/src/main/java/net/minecraft/world/level/block/MangrovePropaguleBlock.java @@ -89,7 +89,7 @@ public class MangrovePropaguleBlock extends SaplingBlock implements SimpleWaterl @Override public void randomTick(BlockState state, ServerLevel world, BlockPos pos, RandomSource random) { if (!isHanging(state)) { - if (random.nextInt(7) == 0) { + if (random.nextFloat() < (world.spigotConfig.saplingModifier / (100.0F * 7))) { // Paper this.advanceTree(world, pos, state, random); } diff --git a/src/main/java/net/minecraft/world/level/block/PitcherCropBlock.java b/src/main/java/net/minecraft/world/level/block/PitcherCropBlock.java index b11bf1a67a3c05371bec9f18f07a6c7f0f555379..455ad1cf57518abf7e71b8e613b1e2934ae3c93e 100644 --- a/src/main/java/net/minecraft/world/level/block/PitcherCropBlock.java +++ b/src/main/java/net/minecraft/world/level/block/PitcherCropBlock.java @@ -112,7 +112,7 @@ public class PitcherCropBlock extends DoublePlantBlock implements BonemealableBl @Override public void randomTick(BlockState state, ServerLevel world, BlockPos pos, RandomSource random) { float f = CropBlock.getGrowthSpeed(this, world, pos); - boolean bl = random.nextInt((int)(25.0F / f) + 1) == 0; + boolean bl = random.nextFloat() < (world.spigotConfig.pitcherPlantModifier / (100.0F * (Math.floor(25.0F / f) + 1))); // Paper if (bl) { this.grow(world, state, pos, 1); } diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java index b7d6197cb5f46bb020fff049ae2dd8fc3ee8ff2f..38da4cc3fe3be86e43432de942a1290fa8215474 100644 --- a/src/main/java/org/spigotmc/SpigotWorldConfig.java +++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java @@ -96,6 +96,7 @@ public class SpigotWorldConfig public int beetrootModifier; public int carrotModifier; public int potatoModifier; + public int torchFlowerModifier; // Paper public int wheatModifier; public int wartModifier; public int vineModifier; @@ -106,6 +107,8 @@ public class SpigotWorldConfig public int twistingVinesModifier; public int weepingVinesModifier; public int caveVinesModifier; + public int glowBerryModifier; // Paper + public int pitcherPlantModifier; // Paper private int getAndValidateGrowth(String crop) { int modifier = this.getInt( "growth." + crop.toLowerCase(java.util.Locale.ENGLISH) + "-modifier", 100 ); @@ -129,6 +132,7 @@ public class SpigotWorldConfig this.beetrootModifier = this.getAndValidateGrowth( "Beetroot" ); this.carrotModifier = this.getAndValidateGrowth( "Carrot" ); this.potatoModifier = this.getAndValidateGrowth( "Potato" ); + this.torchFlowerModifier = this.getAndValidateGrowth("TorchFlower"); // Paper this.wheatModifier = this.getAndValidateGrowth( "Wheat" ); this.wartModifier = this.getAndValidateGrowth( "NetherWart" ); this.vineModifier = this.getAndValidateGrowth( "Vine" ); @@ -139,6 +143,8 @@ public class SpigotWorldConfig this.twistingVinesModifier = this.getAndValidateGrowth( "TwistingVines" ); this.weepingVinesModifier = this.getAndValidateGrowth( "WeepingVines" ); this.caveVinesModifier = this.getAndValidateGrowth( "CaveVines" ); + this.glowBerryModifier = this.getAndValidateGrowth("GlowBerry"); // Paper + this.pitcherPlantModifier = this.getAndValidateGrowth("PitcherPlant"); // Paper } public double itemMerge;