From 7d3e69b342f1df1416b3afc5ae38158857c4bfe3 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Sun, 5 Jan 2025 12:34:19 -0800 Subject: [PATCH] Add turtle egg block options --- .../0020-Add-turtle-egg-block-options.patch | 57 ------------------- .../level/block/TurtleEggBlock.java.patch | 32 +++++++++++ .../purpurmc/purpur/PurpurWorldConfig.java | 9 +++ 3 files changed, 41 insertions(+), 57 deletions(-) delete mode 100644 patches/server/0020-Add-turtle-egg-block-options.patch create mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TurtleEggBlock.java.patch diff --git a/patches/server/0020-Add-turtle-egg-block-options.patch b/patches/server/0020-Add-turtle-egg-block-options.patch deleted file mode 100644 index cb1136a81..000000000 --- a/patches/server/0020-Add-turtle-egg-block-options.patch +++ /dev/null @@ -1,57 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: William Blake Galbreath -Date: Thu, 6 Jun 2019 22:15:46 -0500 -Subject: [PATCH] Add turtle egg block options - - -diff --git a/net/minecraft/world/level/block/TurtleEggBlock.java b/net/minecraft/world/level/block/TurtleEggBlock.java -index 953ddb2ea6fd48e57712e30a6addf23e188e5312..df2028f53fd07551f8aa7eeb49f99ac0676d5fe0 100644 ---- a/net/minecraft/world/level/block/TurtleEggBlock.java -+++ b/net/minecraft/world/level/block/TurtleEggBlock.java -@@ -204,6 +204,25 @@ public class TurtleEggBlock extends Block { - } - - private boolean canDestroyEgg(ServerLevel 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 - Add turtle egg block options -+ if (entity instanceof Turtle || entity instanceof Bat) { -+ return false; -+ } -+ if (world.purpurConfig.turtleEggsBreakFromExpOrbs && entity instanceof net.minecraft.world.entity.ExperienceOrb) { -+ return true; -+ } -+ if (world.purpurConfig.turtleEggsBreakFromItems && entity instanceof net.minecraft.world.entity.item.ItemEntity) { -+ return true; -+ } -+ if (world.purpurConfig.turtleEggsBreakFromMinecarts && entity instanceof net.minecraft.world.entity.vehicle.AbstractMinecart) { -+ return true; -+ } -+ if (!(entity instanceof LivingEntity)) { -+ return false; -+ } -+ if (entity instanceof Player) return true; -+ -+ return world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); -+ // Purpur end - Add turtle egg block options - } - } -diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d6b1b49102ae4421e273f6c781e25a3b18fe13f7..f6186c65468953756da9c381c6ee712115a244f7 100644 ---- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -141,6 +141,15 @@ public class PurpurWorldConfig { - }); - } - -+ public boolean turtleEggsBreakFromExpOrbs = false; -+ public boolean turtleEggsBreakFromItems = false; -+ public boolean turtleEggsBreakFromMinecarts = false; -+ private void turtleEggSettings() { -+ turtleEggsBreakFromExpOrbs = getBoolean("blocks.turtle_egg.break-from-exp-orbs", turtleEggsBreakFromExpOrbs); -+ turtleEggsBreakFromItems = getBoolean("blocks.turtle_egg.break-from-items", turtleEggsBreakFromItems); -+ turtleEggsBreakFromMinecarts = getBoolean("blocks.turtle_egg.break-from-minecarts", turtleEggsBreakFromMinecarts); -+ } -+ - public boolean babiesAreRidable = true; - public boolean untamedTamablesAreRidable = true; - public boolean useNightVisionWhenRiding = false; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TurtleEggBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TurtleEggBlock.java.patch new file mode 100644 index 000000000..6d40367fc --- /dev/null +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TurtleEggBlock.java.patch @@ -0,0 +1,32 @@ +--- a/net/minecraft/world/level/block/TurtleEggBlock.java ++++ b/net/minecraft/world/level/block/TurtleEggBlock.java +@@ -192,9 +_,25 @@ + } + + private boolean canDestroyEgg(ServerLevel level, Entity entity) { +- return !(entity instanceof Turtle) +- && !(entity instanceof Bat) +- && entity instanceof LivingEntity +- && (entity instanceof Player || level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)); ++ // Purpur start - Add turtle egg block options ++ if (entity instanceof Turtle || entity instanceof Bat) { ++ return false; ++ } ++ if (level.purpurConfig.turtleEggsBreakFromExpOrbs && entity instanceof net.minecraft.world.entity.ExperienceOrb) { ++ return true; ++ } ++ if (level.purpurConfig.turtleEggsBreakFromItems && entity instanceof net.minecraft.world.entity.item.ItemEntity) { ++ return true; ++ } ++ if (level.purpurConfig.turtleEggsBreakFromMinecarts && entity instanceof net.minecraft.world.entity.vehicle.AbstractMinecart) { ++ return true; ++ } ++ if (!(entity instanceof LivingEntity)) { ++ return false; ++ } ++ if (entity instanceof Player) return true; ++ ++ return level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); ++ // Purpur end - Add turtle egg block options + } + } diff --git a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index 2efc228f8..fc3c6c8df 100644 --- a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -127,6 +127,15 @@ public class PurpurWorldConfig { }); } + public boolean turtleEggsBreakFromExpOrbs = false; + public boolean turtleEggsBreakFromItems = false; + public boolean turtleEggsBreakFromMinecarts = false; + private void turtleEggSettings() { + turtleEggsBreakFromExpOrbs = getBoolean("blocks.turtle_egg.break-from-exp-orbs", turtleEggsBreakFromExpOrbs); + turtleEggsBreakFromItems = getBoolean("blocks.turtle_egg.break-from-items", turtleEggsBreakFromItems); + turtleEggsBreakFromMinecarts = getBoolean("blocks.turtle_egg.break-from-minecarts", turtleEggsBreakFromMinecarts); + } + public boolean babiesAreRidable = true; public boolean untamedTamablesAreRidable = true; public boolean useNightVisionWhenRiding = false;