diff --git a/patches/server/0022-MC-168772-Fix-Add-turtle-egg-block-options.patch b/patches/server/0022-Add-turtle-egg-block-options.patch similarity index 67% rename from patches/server/0022-MC-168772-Fix-Add-turtle-egg-block-options.patch rename to patches/server/0022-Add-turtle-egg-block-options.patch index 314d378bd..0e7701193 100644 --- a/patches/server/0022-MC-168772-Fix-Add-turtle-egg-block-options.patch +++ b/patches/server/0022-Add-turtle-egg-block-options.patch @@ -1,56 +1,50 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Thu, 6 Jun 2019 22:15:46 -0500 -Subject: [PATCH] MC-168772 Fix - Add turtle egg block options +Subject: [PATCH] Add turtle egg block options diff --git a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java -index 70d46aafa9c16921e5c5bed3d97b8f402e25038a..7edbe55556d3072690d535575e8704c617465770 100644 +index 70d46aafa9c16921e5c5bed3d97b8f402e25038a..1cc3e156eb612a7dc0a771d38252525c1884eaea 100644 --- a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java +++ b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java -@@ -9,11 +9,15 @@ import net.minecraft.tags.BlockTags; - import net.minecraft.util.RandomSource; +@@ -10,7 +10,6 @@ import net.minecraft.util.RandomSource; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; -+import net.minecraft.world.entity.ExperienceOrb; import net.minecraft.world.entity.LivingEntity; - import net.minecraft.world.entity.ambient.Bat; +-import net.minecraft.world.entity.ambient.Bat; import net.minecraft.world.entity.animal.Turtle; -+import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.monster.Zombie; import net.minecraft.world.entity.player.Player; -+import net.minecraft.world.entity.vehicle.AbstractMinecart; -+import net.minecraft.world.item.Item; - import net.minecraft.world.item.ItemStack; - import net.minecraft.world.item.context.BlockPlaceContext; - import net.minecraft.world.level.BlockGetter; -@@ -193,6 +197,23 @@ public class TurtleEggBlock extends Block { +@@ -193,6 +192,25 @@ public class TurtleEggBlock extends Block { } private boolean canDestroyEgg(Level world, Entity entity) { - return !(entity instanceof Turtle) && !(entity instanceof Bat) ? (!(entity instanceof LivingEntity) ? false : entity instanceof Player || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) : false; -+ // Purpur start - fix MC-168772 -+ if (entity instanceof Turtle) { ++ // Purpur start ++ if (entity instanceof Turtle || entity instanceof net.minecraft.world.entity.ambient.Bat) { + return false; + } -+ if (!world.purpurConfig.turtleEggsBreakFromExpOrbs && entity instanceof ExperienceOrb) { ++ if (!world.purpurConfig.turtleEggsBreakFromExpOrbs && entity instanceof net.minecraft.world.entity.ExperienceOrb) { + return false; + } -+ if (!world.purpurConfig.turtleEggsBreakFromItems && entity instanceof ItemEntity) { ++ if (!world.purpurConfig.turtleEggsBreakFromItems && entity instanceof net.minecraft.world.entity.item.ItemEntity) { + return false; + } -+ if (!world.purpurConfig.turtleEggsBreakFromMinecarts && entity instanceof AbstractMinecart) { ++ if (!world.purpurConfig.turtleEggsBreakFromMinecarts && entity instanceof net.minecraft.world.entity.vehicle.AbstractMinecart) { + return false; + } -+ if (entity instanceof LivingEntity && !(entity instanceof Player)) { -+ return world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); ++ if (!(entity instanceof LivingEntity)) { ++ return false; + } -+ return true; ++ if (entity instanceof Player) return true; ++ ++ return world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); + // Purpur end } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c46dc432e0a004c1912dc2eeb5da41cc76dfd7e8..0ebed2363ee959a10eddb60d2cdfc4d2b81b49d9 100644 +index 4b538590943d7ac36f04526ad87431d7c9b5fc60..f295aeec1428086bb3d2cf4720fdcc7c6ed2131a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -147,6 +147,15 @@ public class PurpurWorldConfig { diff --git a/patches/server/0126-Add-mobGriefing-bypass-to-everything-affected.patch b/patches/server/0126-Add-mobGriefing-bypass-to-everything-affected.patch index a06cb68a9..e569f1f3c 100644 --- a/patches/server/0126-Add-mobGriefing-bypass-to-everything-affected.patch +++ b/patches/server/0126-Add-mobGriefing-bypass-to-everything-affected.patch @@ -18,7 +18,7 @@ index 3f8e4c7436a0f0b8d1e4391967185e362eadd0b8..2d3d36f46e65d44fddf8b1f6e8de2c37 BlockState iblockdata = Blocks.WITHER_ROSE.defaultBlockState(); diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 7bab96e597b09b54470e83996264025eaae1fdca..bbb8af6885d465a2a3882e362b2583539f547876 100644 +index 9b28aed2686bcd8c521d4876fe2a7775e9a8f1b9..57c1f778c0a10bcac251b2167b20481b3ec26234 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -670,7 +670,7 @@ public abstract class Mob extends LivingEntity { @@ -361,18 +361,18 @@ index 518d3832c36c9ecf1ed9267ffc1f926dc84b7989..af5933b886abf3fd17bfdb8c1cb1ea63 } // CraftBukkit end diff --git a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java -index 7edbe55556d3072690d535575e8704c617465770..87bae3047c16428194eae82d52e2e0c2f293c4d2 100644 +index 1cc3e156eb612a7dc0a771d38252525c1884eaea..2543bae9e919fff36d74cd09e295a88534b61f76 100644 --- a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java +++ b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java -@@ -211,7 +211,7 @@ public class TurtleEggBlock extends Block { - return false; +@@ -210,7 +210,7 @@ public class TurtleEggBlock extends Block { } - if (entity instanceof LivingEntity && !(entity instanceof Player)) { -- return world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); -+ return world.purpurConfig.turtleEggsBypassMobGriefing || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); - } - return true; + if (entity instanceof Player) return true; + +- return world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); ++ return world.purpurConfig.turtleEggsBypassMobGriefing || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // Purpur end + } + } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index 670b87db94104499e860c7fc2b2ff6ab73d7350a..d504b3177476996a7d772eb7eeaa728521e8ae38 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/patches/server/0238-Turtle-eggs-random-tick-crack-chance.patch b/patches/server/0238-Turtle-eggs-random-tick-crack-chance.patch index 9f370afa4..8b4923185 100644 --- a/patches/server/0238-Turtle-eggs-random-tick-crack-chance.patch +++ b/patches/server/0238-Turtle-eggs-random-tick-crack-chance.patch @@ -5,24 +5,10 @@ Subject: [PATCH] Turtle eggs random tick crack chance diff --git a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java -index 87bae3047c16428194eae82d52e2e0c2f293c4d2..a1c6d0bfc38f57737dcf885488c8bd7ffcab393a 100644 +index 2543bae9e919fff36d74cd09e295a88534b61f76..2abca4edcab17a2814a457461923a656810043f5 100644 --- a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java +++ b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java -@@ -11,13 +11,11 @@ import net.minecraft.world.entity.Entity; - import net.minecraft.world.entity.EntityType; - import net.minecraft.world.entity.ExperienceOrb; - import net.minecraft.world.entity.LivingEntity; --import net.minecraft.world.entity.ambient.Bat; - import net.minecraft.world.entity.animal.Turtle; - import net.minecraft.world.entity.item.ItemEntity; - import net.minecraft.world.entity.monster.Zombie; - import net.minecraft.world.entity.player.Player; - import net.minecraft.world.entity.vehicle.AbstractMinecart; --import net.minecraft.world.item.Item; - import net.minecraft.world.item.ItemStack; - import net.minecraft.world.item.context.BlockPlaceContext; - import net.minecraft.world.level.BlockGetter; -@@ -164,7 +162,7 @@ public class TurtleEggBlock extends Block { +@@ -159,7 +159,7 @@ public class TurtleEggBlock extends Block { private boolean shouldUpdateHatchLevel(Level world) { float f = world.getTimeOfDay(1.0F); @@ -32,7 +18,7 @@ index 87bae3047c16428194eae82d52e2e0c2f293c4d2..a1c6d0bfc38f57737dcf885488c8bd7f @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3c97e3df12897a8aee762314e91ebcd45ef6ce4c..847964d820f86867a4a6e7f5f37dbd3b852a6d4c 100644 +index e85beb8d57d9f421e793215e6b8b2d20289d477d..0abaa61cd1ca81da3062c9732deba789309a55df 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -989,11 +989,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0259-Option-to-disable-turtle-egg-trampling-with-feather-.patch b/patches/server/0259-Option-to-disable-turtle-egg-trampling-with-feather-.patch index f976046aa..b0b6bbd8d 100644 --- a/patches/server/0259-Option-to-disable-turtle-egg-trampling-with-feather-.patch +++ b/patches/server/0259-Option-to-disable-turtle-egg-trampling-with-feather-.patch @@ -5,22 +5,26 @@ Subject: [PATCH] Option to disable turtle egg trampling with feather falling diff --git a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java -index a1c6d0bfc38f57737dcf885488c8bd7ffcab393a..f39b902bea3e7dca15d3af2bc590182685e34c7f 100644 +index 2abca4edcab17a2814a457461923a656810043f5..ca4aec45bb0251ac371e6f00dff8f2d59fdf15b1 100644 --- a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java +++ b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java -@@ -211,6 +211,10 @@ public class TurtleEggBlock extends Block { - if (entity instanceof LivingEntity && !(entity instanceof Player)) { - return world.purpurConfig.turtleEggsBypassMobGriefing || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); +@@ -208,7 +208,13 @@ public class TurtleEggBlock extends Block { + if (!(entity instanceof LivingEntity)) { + return false; } +- if (entity instanceof Player) return true; + if (world.purpurConfig.turtleEggsTramplingFeatherFalling) { + java.util.Iterator armor = entity.getArmorSlots().iterator(); + return !armor.hasNext() || net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.FALL_PROTECTION, armor.next()) < (int) entity.fallDistance; + } - return true; ++ if (entity instanceof Player) { ++ return true; ++ } + + return world.purpurConfig.turtleEggsBypassMobGriefing || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // Purpur end - } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index aa648896e58e8a07f09326e5aa038e1f0bf90226..5ce6326bf776e817d9b1a5cce691a88d54c4b584 100644 +index 4fbaf83a19c42d74082d1420455e9b6d2abac1db..6847a69ccb0201f69be339326a8dd20797c9a605 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1004,12 +1004,14 @@ public class PurpurWorldConfig {