respect vanilla when trampling turtle eggs, closes #1255

This commit is contained in:
granny
2023-01-22 12:06:42 -08:00
parent 7a5b6a53f1
commit d1bffa3efb
4 changed files with 39 additions and 55 deletions

View File

@@ -1,56 +1,50 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <blake.galbreath@gmail.com> From: William Blake Galbreath <blake.galbreath@gmail.com>
Date: Thu, 6 Jun 2019 22:15:46 -0500 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 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 --- a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java
+++ b/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; @@ -10,7 +10,6 @@ import net.minecraft.util.RandomSource;
import net.minecraft.util.RandomSource;
import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.EntityType;
+import net.minecraft.world.entity.ExperienceOrb;
import net.minecraft.world.entity.LivingEntity; 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.animal.Turtle;
+import net.minecraft.world.entity.item.ItemEntity;
import net.minecraft.world.entity.monster.Zombie; import net.minecraft.world.entity.monster.Zombie;
import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.entity.vehicle.AbstractMinecart; @@ -193,6 +192,25 @@ public class TurtleEggBlock extends Block {
+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 {
} }
private boolean canDestroyEgg(Level world, Entity entity) { 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; - 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 + // Purpur start
+ if (entity instanceof Turtle) { + if (entity instanceof Turtle || entity instanceof net.minecraft.world.entity.ambient.Bat) {
+ return false; + return false;
+ } + }
+ if (!world.purpurConfig.turtleEggsBreakFromExpOrbs && entity instanceof ExperienceOrb) { + if (!world.purpurConfig.turtleEggsBreakFromExpOrbs && entity instanceof net.minecraft.world.entity.ExperienceOrb) {
+ return false; + return false;
+ } + }
+ if (!world.purpurConfig.turtleEggsBreakFromItems && entity instanceof ItemEntity) { + if (!world.purpurConfig.turtleEggsBreakFromItems && entity instanceof net.minecraft.world.entity.item.ItemEntity) {
+ return false; + return false;
+ } + }
+ if (!world.purpurConfig.turtleEggsBreakFromMinecarts && entity instanceof AbstractMinecart) { + if (!world.purpurConfig.turtleEggsBreakFromMinecarts && entity instanceof net.minecraft.world.entity.vehicle.AbstractMinecart) {
+ return false; + return false;
+ } + }
+ if (entity instanceof LivingEntity && !(entity instanceof Player)) { + if (!(entity instanceof LivingEntity)) {
+ return world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); + return false;
+ } + }
+ return true; + if (entity instanceof Player) return true;
+
+ return world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING);
+ // Purpur end + // Purpur end
} }
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java 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 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -147,6 +147,15 @@ public class PurpurWorldConfig { @@ -147,6 +147,15 @@ public class PurpurWorldConfig {

View File

@@ -18,7 +18,7 @@ index 3f8e4c7436a0f0b8d1e4391967185e362eadd0b8..2d3d36f46e65d44fddf8b1f6e8de2c37
BlockState iblockdata = Blocks.WITHER_ROSE.defaultBlockState(); 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 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 --- a/src/main/java/net/minecraft/world/entity/Mob.java
+++ b/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 { @@ -670,7 +670,7 @@ public abstract class Mob extends LivingEntity {
@@ -361,18 +361,18 @@ index 518d3832c36c9ecf1ed9267ffc1f926dc84b7989..af5933b886abf3fd17bfdb8c1cb1ea63
} }
// CraftBukkit end // 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 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 --- a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java
+++ b/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 { @@ -210,7 +210,7 @@ public class TurtleEggBlock extends Block {
return false;
} }
if (entity instanceof LivingEntity && !(entity instanceof Player)) { if (entity instanceof Player) return true;
- return world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING);
+ return world.purpurConfig.turtleEggsBypassMobGriefing || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); - return world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING);
} + return world.purpurConfig.turtleEggsBypassMobGriefing || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING);
return true;
// Purpur end // Purpur end
}
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 670b87db94104499e860c7fc2b2ff6ab73d7350a..d504b3177476996a7d772eb7eeaa728521e8ae38 100644 index 670b87db94104499e860c7fc2b2ff6ab73d7350a..d504b3177476996a7d772eb7eeaa728521e8ae38 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java

View File

@@ -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 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 --- a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java
+++ b/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; @@ -159,7 +159,7 @@ public class TurtleEggBlock extends Block {
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 {
private boolean shouldUpdateHatchLevel(Level world) { private boolean shouldUpdateHatchLevel(Level world) {
float f = world.getTimeOfDay(1.0F); float f = world.getTimeOfDay(1.0F);
@@ -32,7 +18,7 @@ index 87bae3047c16428194eae82d52e2e0c2f293c4d2..a1c6d0bfc38f57737dcf885488c8bd7f
@Override @Override
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java 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 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -989,11 +989,13 @@ public class PurpurWorldConfig { @@ -989,11 +989,13 @@ public class PurpurWorldConfig {

View File

@@ -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 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 --- a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java
+++ b/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 { @@ -208,7 +208,13 @@ public class TurtleEggBlock extends Block {
if (entity instanceof LivingEntity && !(entity instanceof Player)) { if (!(entity instanceof LivingEntity)) {
return world.purpurConfig.turtleEggsBypassMobGriefing || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); return false;
} }
- if (entity instanceof Player) return true;
+ if (world.purpurConfig.turtleEggsTramplingFeatherFalling) { + if (world.purpurConfig.turtleEggsTramplingFeatherFalling) {
+ java.util.Iterator<ItemStack> armor = entity.getArmorSlots().iterator(); + java.util.Iterator<ItemStack> 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 !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 // Purpur end
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java 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 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1004,12 +1004,14 @@ public class PurpurWorldConfig { @@ -1004,12 +1004,14 @@ public class PurpurWorldConfig {