From 468a199184ca54766083137d297c533ffddefe25 Mon Sep 17 00:00:00 2001 From: BillyGalbreath Date: Tue, 4 Jan 2022 15:59:45 -0600 Subject: [PATCH] Configurable farmland trample height --- ...Configurable-farmland-trample-height.patch | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 patches/server/0256-Configurable-farmland-trample-height.patch diff --git a/patches/server/0256-Configurable-farmland-trample-height.patch b/patches/server/0256-Configurable-farmland-trample-height.patch new file mode 100644 index 000000000..a3cda722b --- /dev/null +++ b/patches/server/0256-Configurable-farmland-trample-height.patch @@ -0,0 +1,56 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: BillyGalbreath +Date: Tue, 4 Jan 2022 11:56:48 -0600 +Subject: [PATCH] Configurable farmland trample height + +This is _not_ in block height or an exact science. +During my testing I found very inconsistent values +for the fallDistance variable. Here are the results +of those tests (https://imgur.com/BojltJF): + +Value set -> Actual fall distance needed to trample + 1.0 -> 1.25 + 1.5 -> 1.75 + 2.0 -> 2.25 + 2.5 -> 2.87 + 3.0 -> 3.5 + 3.5 -> 4.25 + 4.0 -> 4.25 + 4.5 -> 5.0 + 5.0 -> 5.87 + 5.5 -> 5.87 + 6.0 -> 6.75 + +diff --git a/src/main/java/net/minecraft/world/level/block/FarmBlock.java b/src/main/java/net/minecraft/world/level/block/FarmBlock.java +index a750d9cfbb7ba9057004924cac2b5a814501e67e..07314cddf5afd18bc0f06d8b3de7b1dc340e5a02 100644 +--- a/src/main/java/net/minecraft/world/level/block/FarmBlock.java ++++ b/src/main/java/net/minecraft/world/level/block/FarmBlock.java +@@ -99,7 +99,7 @@ public class FarmBlock extends Block { + @Override + public void fallOn(Level world, BlockState state, BlockPos pos, Entity entity, float fallDistance) { + super.fallOn(world, state, pos, entity, fallDistance); // CraftBukkit - moved here as game rules / events shouldn't affect fall damage. +- if (!world.isClientSide && world.random.nextFloat() < fallDistance - 0.5F && entity instanceof LivingEntity && (entity instanceof Player || world.purpurConfig.farmlandBypassMobGriefing || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) && entity.getBbWidth() * entity.getBbWidth() * entity.getBbHeight() > 0.512F) { // Purpur ++ if (!world.isClientSide && (world.purpurConfig.farmlandTrampleHeight >= 0D ? fallDistance >= world.purpurConfig.farmlandTrampleHeight : world.random.nextFloat() < fallDistance - 0.5F) && entity instanceof LivingEntity && (entity instanceof Player || world.purpurConfig.farmlandBypassMobGriefing || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) && entity.getBbWidth() * entity.getBbWidth() * entity.getBbHeight() > 0.512F) { // Purpur + // CraftBukkit start - Interact soil + org.bukkit.event.Cancellable cancellable; + if (entity instanceof Player) { +diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +index bcfe7baa38fbb29abce49444f4ca82f23041d76d..4bdd91dc2cd76525af4ba2f6d361e10efdf6fda3 100644 +--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java ++++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +@@ -833,6 +833,7 @@ public class PurpurWorldConfig { + public boolean farmlandTramplingDisabled = false; + public boolean farmlandTramplingOnlyPlayers = false; + public boolean farmlandTramplingFeatherFalling = false; ++ public double farmlandTrampleHeight = -1D; + private void farmlandSettings() { + farmlandBypassMobGriefing = getBoolean("blocks.farmland.bypass-mob-griefing", farmlandBypassMobGriefing); + farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); +@@ -840,6 +841,7 @@ public class PurpurWorldConfig { + farmlandTramplingDisabled = getBoolean("blocks.farmland.disable-trampling", farmlandTramplingDisabled); + farmlandTramplingOnlyPlayers = getBoolean("blocks.farmland.only-players-trample", farmlandTramplingOnlyPlayers); + farmlandTramplingFeatherFalling = getBoolean("blocks.farmland.feather-fall-distance-affects-trampling", farmlandTramplingFeatherFalling); ++ farmlandTrampleHeight = getDouble("blocks.farmland.trample-height", farmlandTrampleHeight); + } + + public double floweringAzaleaGrowthChance = 0.0D;