mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-17 16:37:43 +01:00
respect vanilla when trampling turtle eggs, closes #1255
This commit is contained in:
@@ -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 {
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user