From 1f2d9788a74e6483779346326ee9ccaa110a2605 Mon Sep 17 00:00:00 2001 From: BillyGalbreath Date: Tue, 28 Dec 2021 10:35:54 -0600 Subject: [PATCH] Option to prevent spiders from climbing world border --- ...t-spiders-from-climbing-world-border.patch | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 patches/server/0249-Option-to-prevent-spiders-from-climbing-world-border.patch diff --git a/patches/server/0249-Option-to-prevent-spiders-from-climbing-world-border.patch b/patches/server/0249-Option-to-prevent-spiders-from-climbing-world-border.patch new file mode 100644 index 000000000..68c97102c --- /dev/null +++ b/patches/server/0249-Option-to-prevent-spiders-from-climbing-world-border.patch @@ -0,0 +1,60 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: BillyGalbreath +Date: Tue, 28 Dec 2021 10:11:31 -0600 +Subject: [PATCH] Option to prevent spiders from climbing world border + + +diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java +index 8fb0b23f7b643c6bc321f3a3b4acfab78646721b..76469bd6b087a378325a2515186cfc591691ea27 100644 +--- a/src/main/java/net/minecraft/world/entity/Entity.java ++++ b/src/main/java/net/minecraft/world/entity/Entity.java +@@ -234,6 +234,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i + public boolean horizontalCollision; + public boolean verticalCollision; + public boolean minorHorizontalCollision; ++ public boolean collidingWithWorldBorder; // Purpur + public boolean hurtMarked; + protected Vec3 stuckSpeedMultiplier; + @Nullable +@@ -1287,7 +1288,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i + io.papermc.paper.util.CollisionUtil.getCollisions(world, this, collisionBox, potentialCollisions, false, true, + false, false, null, null); + +- if (io.papermc.paper.util.CollisionUtil.isCollidingWithBorderEdge(world.getWorldBorder(), collisionBox)) { ++ if (this.collidingWithWorldBorder = io.papermc.paper.util.CollisionUtil.isCollidingWithBorderEdge(world.getWorldBorder(), collisionBox)) { // Purpur + io.papermc.paper.util.CollisionUtil.addBoxesToIfIntersects(world.getWorldBorder().getCollisionShape(), collisionBox, potentialCollisions); + } + +diff --git a/src/main/java/net/minecraft/world/entity/monster/Spider.java b/src/main/java/net/minecraft/world/entity/monster/Spider.java +index f85daf21ae3d77d2d56c131c6df9aa0715a306ca..6ef3cf19e5374631602e68d15ad431fc1a747ea5 100644 +--- a/src/main/java/net/minecraft/world/entity/monster/Spider.java ++++ b/src/main/java/net/minecraft/world/entity/monster/Spider.java +@@ -113,7 +113,7 @@ public class Spider extends Monster { + public void tick() { + super.tick(); + if (!this.level.isClientSide) { +- this.setClimbing(this.horizontalCollision); ++ this.setClimbing(this.horizontalCollision && (this.level.purpurConfig.spiderCanClimbWorldBorder || !this.collidingWithWorldBorder)); // Purpur + } + + } +diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +index 3ab0c55db605c15ba3488b682b06ee8f7debdeb6..68c2b381abecc4221b2ca250fdc9c04d994fce3e 100644 +--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java ++++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +@@ -2333,6 +2333,7 @@ public class PurpurWorldConfig { + public double spiderMaxHealth = 16.0D; + public boolean spiderTakeDamageFromWater = false; + public boolean spiderAlwaysDropExp = false; ++ public boolean spiderCanClimbWorldBorder = true; + private void spiderSettings() { + spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); + spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); +@@ -2344,6 +2345,7 @@ public class PurpurWorldConfig { + spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth); + spiderTakeDamageFromWater = getBoolean("mobs.spider.takes-damage-from-water", spiderTakeDamageFromWater); + spiderAlwaysDropExp = getBoolean("mobs.spider.always-drop-exp", spiderAlwaysDropExp); ++ spiderCanClimbWorldBorder = getBoolean("mobs.spider.can-climb-world-border", spiderCanClimbWorldBorder); + } + + public boolean strayRidable = false;