From 2a38801aebc54ea0c9bf4825ca1f6e66b2bd7f03 Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 13 Nov 2023 23:41:37 -0800 Subject: [PATCH] adds ridable option to zombie horse and skeleton horse, fixes #1458 only set as tamable if already tamed or if ridable option is enabled --- patches/server/0008-Ridables.patch | 16 ++- ...-Configurable-entity-base-attributes.patch | 26 ++-- .../0025-Zombie-horse-naturally-spawn.patch | 10 +- ...37-Snowman-drop-and-put-back-pumpkin.patch | 6 +- ...0049-Villagers-follow-emerald-blocks.patch | 16 +-- .../0050-Allow-leashing-villagers.patch | 10 +- .../0065-Configurable-jockey-options.patch | 20 +-- patches/server/0074-Squid-EAR-immunity.patch | 8 +- .../0076-Configurable-villager-breeding.patch | 8 +- ...9-Add-vindicator-johnny-spawn-chance.patch | 6 +- ...Stop-squids-floating-on-top-of-water.patch | 8 +- ...stomizable-wither-health-and-healing.patch | 6 +- ...sable-zombie-aggressiveness-towards-.patch | 10 +- patches/server/0094-Flying-squids-Oh-my.patch | 6 +- ...e-entity-breeding-times-configurable.patch | 28 ++-- .../0109-Snow-Golem-rate-of-fire-config.patch | 6 +- ...Villager-Clerics-to-farm-Nether-Wart.patch | 8 +- ...fied-Piglin-death-always-counting-as.patch | 6 +- ...ble-chance-for-wolves-to-spawn-rabid.patch | 8 +- ...14-Configurable-default-collar-color.patch | 6 +- .../0118-Striders-give-saddle-back.patch | 6 +- ...iefing-bypass-to-everything-affected.patch | 24 ++-- ...oggle-for-water-sensitive-mob-damage.patch | 118 ++++++++--------- ...ither-Ender-Dragon-can-ride-vehicles.patch | 8 +- ...0145-Add-config-for-villager-trading.patch | 14 +- ...8-Config-for-wither-explosion-radius.patch | 6 +- ...onfigurable-hunger-starvation-damage.patch | 6 +- ...izeable-Zombie-Villager-curing-times.patch | 8 +- ...0202-Toggle-for-Wither-s-spawn-sound.patch | 6 +- .../0205-Conduit-behavior-configuration.patch | 4 +- .../server/0206-Cauldron-fill-chances.patch | 4 +- ...ion-to-disable-zombie-villagers-cure.patch | 8 +- .../0226-Mobs-always-drop-experience.patch | 124 +++++++++--------- .../0232-Mob-head-visibility-percent.patch | 12 +- ...nfigurable-minimum-demand-for-trades.patch | 8 +- .../0244-Lobotomize-stuck-villagers.patch | 10 +- ...tion-for-villager-display-trade-item.patch | 6 +- ...urable-search-radius-for-villagers-t.patch | 8 +- .../0256-Skeletons-eat-wither-roses.patch | 4 +- ...272-Add-skeleton-bow-accuracy-option.patch | 4 +- .../server/0300-Shears-can-defuse-TNT.patch | 4 +- 41 files changed, 309 insertions(+), 301 deletions(-) diff --git a/patches/server/0008-Ridables.patch b/patches/server/0008-Ridables.patch index 0b62f13a6..f30c7e675 100644 --- a/patches/server/0008-Ridables.patch +++ b/patches/server/0008-Ridables.patch @@ -2647,7 +2647,7 @@ index a6601f70890f90691923c0e6a9f10ea597ccabc2..ae7bcfa608d8bdd2a2320618225294de protected SoundEvent getAmbientSound() { return SoundEvents.MULE_AMBIENT; diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java -index 92d170dd0155a7a5879de4a320cdc03bb66d8887..6d5a37facc288ebb27d96c2451091ea299c16077 100644 +index 92d170dd0155a7a5879de4a320cdc03bb66d8887..0318297ed96a640932728d704fa273c4d126e034 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java @@ -31,6 +31,13 @@ public class SkeletonHorse extends AbstractHorse { @@ -2657,7 +2657,7 @@ index 92d170dd0155a7a5879de4a320cdc03bb66d8887..6d5a37facc288ebb27d96c2451091ea2 + // Purpur start + @Override + public boolean isTamed() { -+ return true; ++ return super.isTamed() || this.level().purpurConfig.skeletonHorseRidable; + } + // Purpur end + @@ -2706,7 +2706,7 @@ index b016f53c6644c6411b3a91e09049892131187179..5fc37e2322188e0db12f7679e40b1a3d public boolean isTraderLlama() { return true; diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java -index 7f8bbacf00498a2ed6a13760266df993a289c2dd..6c03ad3d978378221db3e5bed947738bd710eae0 100644 +index 7f8bbacf00498a2ed6a13760266df993a289c2dd..8c5a083f3db046709a38355343ad7e5ab45779b5 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java @@ -22,6 +22,18 @@ public class ZombieHorse extends AbstractHorse { @@ -2721,7 +2721,7 @@ index 7f8bbacf00498a2ed6a13760266df993a289c2dd..6c03ad3d978378221db3e5bed947738b + + @Override + public boolean isTamed() { -+ return true; ++ return super.isTamed() || this.level().purpurConfig.zombieHorseRidable; + } + // Purpur end + @@ -5281,10 +5281,10 @@ index 61d193d8ddd87817bf2c560037d42366cff1eca9..8ad548fc059568d37675e017548b171d + } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5f0732c2b8f85185b6dfc1db3119c22e8be7f5da..4c25461a6d75a47425b66e04285792787d7193ee 100644 +index 5f0732c2b8f85185b6dfc1db3119c22e8be7f5da..3eae97d610d8f61528b87039723ef4ce2dc75c91 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -89,4 +89,722 @@ public class PurpurWorldConfig { +@@ -89,4 +89,726 @@ public class PurpurWorldConfig { final Map value = PurpurConfig.getMap("world-settings." + worldName + "." + path, null); return value.isEmpty() ? fallback : value; } @@ -5775,9 +5775,11 @@ index 5f0732c2b8f85185b6dfc1db3119c22e8be7f5da..4c25461a6d75a47425b66e0428579278 + skeletonControllable = getBoolean("mobs.skeleton.controllable", skeletonControllable); + } + ++ public boolean skeletonHorseRidable = false; + public boolean skeletonHorseRidableInWater = true; + public boolean skeletonHorseCanSwim = false; + private void skeletonHorseSettings() { ++ skeletonHorseRidable = getBoolean("mobs.skeleton_horse.ridable", skeletonHorseRidable); + skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); + skeletonHorseCanSwim = getBoolean("mobs.skeleton_horse.can-swim", skeletonHorseCanSwim); + } @@ -5982,9 +5984,11 @@ index 5f0732c2b8f85185b6dfc1db3119c22e8be7f5da..4c25461a6d75a47425b66e0428579278 + zombieControllable = getBoolean("mobs.zombie.controllable", zombieControllable); + } + ++ public boolean zombieHorseRidable = false; + public boolean zombieHorseRidableInWater = false; + public boolean zombieHorseCanSwim = false; + private void zombieHorseSettings() { ++ zombieHorseRidable = getBoolean("mobs.zombie_horse.ridable", zombieHorseRidable); + zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); + zombieHorseCanSwim = getBoolean("mobs.zombie_horse.can-swim", zombieHorseCanSwim); + } diff --git a/patches/server/0009-Configurable-entity-base-attributes.patch b/patches/server/0009-Configurable-entity-base-attributes.patch index 6600168a5..6ec0ea05b 100644 --- a/patches/server/0009-Configurable-entity-base-attributes.patch +++ b/patches/server/0009-Configurable-entity-base-attributes.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable entity base attributes diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index de2a1621b2d671de8f1c10463661cb361cd9e6b4..120377f090669ef06ad6d53fa55facfb9e1e800a 100644 +index 9501683d6a6239e7a053f9a40a377783232bbe8e..8b9efc0477f1d97414d12282bd9d10a7d2ec83a8 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -156,7 +156,7 @@ import org.bukkit.plugin.PluginManager; @@ -238,7 +238,7 @@ index 66f80ec010909648278c4e74c80d3766b9cf6c6a..14daac1a87e32e0ff0a610aef256e20c return (Boolean) this.entityData.get(Ocelot.DATA_TRUSTING); } diff --git a/src/main/java/net/minecraft/world/entity/animal/Panda.java b/src/main/java/net/minecraft/world/entity/animal/Panda.java -index 5b3a2010da3b6429da783f8263fd170a4fb8d80b..2832d7cbcfad43b3f0f6c33504cff68add85601d 100644 +index 61af090813936bac334a487c21e9e67f80a4c413..6c7354ca03efdaf9e01d4a63f8ac38e74c0c35c8 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Panda.java +++ b/src/main/java/net/minecraft/world/entity/animal/Panda.java @@ -140,6 +140,12 @@ public class Panda extends Animal { @@ -475,7 +475,7 @@ index d1dd2cda473bb2294dc10c66c13eac8591ea4d5b..5cd79df01d4dbe7a1af530c502a78e48 public Map getModelRotationValues() { return this.modelRotationValues; diff --git a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java -index 29108c481756d3150fd0ae69f6d249d127b11fdd..85a557b50498bb83eeec4125aa2ae14f3bfaaab8 100644 +index 02d19eaa4599951dd8a8fe594946c8a3dc5b30a9..909d32553ffd7a32f44f7201fdab850e4bcfdcc7 100644 --- a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java +++ b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java @@ -320,6 +320,23 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Saddl @@ -503,7 +503,7 @@ index 29108c481756d3150fd0ae69f6d249d127b11fdd..85a557b50498bb83eeec4125aa2ae14f protected SoundEvent getAmbientSound() { return SoundEvents.CAMEL_AMBIENT; diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java -index 27050c00ea4e4b301d4c85528117fc1d87e6f1ef..ad4d4e38a2f0125e0943945c9440a9be80b60257 100644 +index 73db73bb5b47f586ce32249458268e4b7cda2003..a27e99ee6d8d2406d141dc1537c7098f43a29318 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java @@ -162,6 +162,44 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, @@ -613,7 +613,7 @@ index 3e50581033e88e8eddcbd85bfa890cbe0b88a7e6..92339f5a07dcb6bf7eb1bce6d584464e protected void randomizeAttributes(RandomSource random) { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue((double)generateMaxHealth(random::nextInt)); diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -index 0549974c56ae7d05b5eec77029c5d08a6614a8bf..278c33b7de4472a746cdbc1faaa68e05592777bc 100644 +index cd11879b8ad7977ca9c0c26d9bcc26ac7078a265..8c8c135e9bc707ae8e2aad249302109023f6fea3 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java @@ -124,6 +124,21 @@ public class Llama extends AbstractChestedHorse implements VariantHolder(this, Axolotl.class, true, false)); this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, true, false, Turtle.BABY_ON_LAND_SELECTOR)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index 971abbfdff555a569ad54b9db5947c3ec50408d2..46fec497e411e3160d9ae9553ae52654d10a9dd3 100644 +index 8a30b101fd2cc78b867ae703f6a4e8805d1c841d..6d7b5cf3db81c4e42dda17757125d4a1c83c8c59 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -157,7 +157,19 @@ public class Zombie extends Monster { @@ -70,10 +70,10 @@ index 971abbfdff555a569ad54b9db5947c3ec50408d2..46fec497e411e3160d9ae9553ae52654 this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, true, false, Turtle.BABY_ON_LAND_SELECTOR)); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 472f3cb5775aed6d902928b9dafe99a139d475d5..45fc13436aa43da593704d142202eb43e5cbe4b3 100644 +index ba055361b27c83fd27e5347c26752e8f88d35793..37794c0863bda3d5cc24cc2e4c512d433eb4ef9b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1850,6 +1850,7 @@ public class PurpurWorldConfig { +@@ -1852,6 +1852,7 @@ public class PurpurWorldConfig { public boolean zombieJockeyOnlyBaby = true; public double zombieJockeyChance = 0.05D; public boolean zombieJockeyTryExistingChickens = true; @@ -81,11 +81,11 @@ index 472f3cb5775aed6d902928b9dafe99a139d475d5..45fc13436aa43da593704d142202eb43 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -1864,6 +1865,7 @@ public class PurpurWorldConfig { +@@ -1866,6 +1867,7 @@ public class PurpurWorldConfig { zombieJockeyOnlyBaby = getBoolean("mobs.zombie.jockey.only-babies", zombieJockeyOnlyBaby); zombieJockeyChance = getDouble("mobs.zombie.jockey.chance", zombieJockeyChance); zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens); + zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging); } - public boolean zombieHorseRidableInWater = false; + public boolean zombieHorseRidable = false; diff --git a/patches/server/0094-Flying-squids-Oh-my.patch b/patches/server/0094-Flying-squids-Oh-my.patch index 097f745e3..01bca2a2b 100644 --- a/patches/server/0094-Flying-squids-Oh-my.patch +++ b/patches/server/0094-Flying-squids-Oh-my.patch @@ -58,7 +58,7 @@ index f68c18b6645981126329b58379946308bbb8ccf8..80bdc93cba675d6c1286618f14fc33e0 float g = Mth.cos(f) * 0.2F; float h = -0.1F + this.squid.getRandom().nextFloat() * 0.2F; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 45fc13436aa43da593704d142202eb43e5cbe4b3..a85d4a9c2583f8233032b680c89b147a230bca41 100644 +index 37794c0863bda3d5cc24cc2e4c512d433eb4ef9b..8af34a04370ebb0b62137387c7eb082443f68c5b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -902,10 +902,12 @@ public class PurpurWorldConfig { @@ -74,7 +74,7 @@ index 45fc13436aa43da593704d142202eb43e5cbe4b3..a85d4a9c2583f8233032b680c89b147a } public boolean goatRidable = false; -@@ -1537,6 +1539,7 @@ public class PurpurWorldConfig { +@@ -1539,6 +1541,7 @@ public class PurpurWorldConfig { public double squidMaxHealth = 10.0D; public boolean squidImmuneToEAR = true; public double squidOffsetWaterCheck = 0.0D; @@ -82,7 +82,7 @@ index 45fc13436aa43da593704d142202eb43e5cbe4b3..a85d4a9c2583f8233032b680c89b147a private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1548,6 +1551,7 @@ public class PurpurWorldConfig { +@@ -1550,6 +1553,7 @@ public class PurpurWorldConfig { squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); diff --git a/patches/server/0102-Make-entity-breeding-times-configurable.patch b/patches/server/0102-Make-entity-breeding-times-configurable.patch index 73d60afe7..8f7fa72e9 100644 --- a/patches/server/0102-Make-entity-breeding-times-configurable.patch +++ b/patches/server/0102-Make-entity-breeding-times-configurable.patch @@ -426,7 +426,7 @@ index abbeb305b2d09e9c4c02ade603adac5ceb34bdd0..1de48560ac5a1db8845c98c812b2e9f9 protected SoundEvent getAmbientSound() { return SoundEvents.MULE_AMBIENT; diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java -index 8ffba7c368f936ea5cdfc46c5fa76c3feb63e1ac..bd83a2b82908d0beb91bd2937e263d6681a691f6 100644 +index cc8813c572618700981403d513f30b8a06e4c49e..e618d3b77cafeaee22b4140449703ca80bdd4c92 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java @@ -53,6 +53,11 @@ public class SkeletonHorse extends AbstractHorse { @@ -458,7 +458,7 @@ index 4abb9d5fedf63eba9dc3f716d44ea11806607af0..3632fcb124be8cf77d9bebf7b861a481 public boolean isTraderLlama() { return true; diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java -index 2e6b55a01e022252245c16ed310920bcba072975..fba4eec4490e389b8b102d40542b9340d8ac559e 100644 +index ebfd54d835cdac3f95c926b3e2e10db6170b4dd7..93c44b8cc86ca4fe0c70855d4eb71411c5a42846 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java @@ -49,6 +49,11 @@ public class ZombieHorse extends AbstractHorse { @@ -522,7 +522,7 @@ index 22788892f7286f3fa6b40059b2bedaf0c6ec5ef3..80f91a11c04763c1c9ed2bd242b88b5a public boolean canBeLeashed(Player player) { return !this.isLeashed(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ff50c24f3a6e2dd0eb5d4e23cc9a38647e2c1194..48de43f61f90e2610e04d04803b374cead07f655 100644 +index 7ebc466f72e61e11e73ab20a98f72d16cea7c077..569a09a73c9d800e78a77c430494292457453ab1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -501,10 +501,12 @@ public class PurpurWorldConfig { @@ -851,7 +851,7 @@ index ff50c24f3a6e2dd0eb5d4e23cc9a38647e2c1194..48de43f61f90e2610e04d04803b374ce } public boolean shulkerRidable = false; -@@ -1565,11 +1607,13 @@ public class PurpurWorldConfig { +@@ -1567,11 +1609,13 @@ public class PurpurWorldConfig { public boolean snifferRidableInWater = true; public boolean snifferControllable = true; public double snifferMaxHealth = 14.0D; @@ -865,7 +865,7 @@ index ff50c24f3a6e2dd0eb5d4e23cc9a38647e2c1194..48de43f61f90e2610e04d04803b374ce } public boolean squidRidable = false; -@@ -1628,6 +1672,7 @@ public class PurpurWorldConfig { +@@ -1630,6 +1674,7 @@ public class PurpurWorldConfig { public boolean striderRidableInWater = false; public boolean striderControllable = true; public double striderMaxHealth = 20.0D; @@ -873,7 +873,7 @@ index ff50c24f3a6e2dd0eb5d4e23cc9a38647e2c1194..48de43f61f90e2610e04d04803b374ce private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1638,6 +1683,7 @@ public class PurpurWorldConfig { +@@ -1640,6 +1685,7 @@ public class PurpurWorldConfig { set("mobs.strider.attributes.max_health", oldValue); } striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); @@ -881,7 +881,7 @@ index ff50c24f3a6e2dd0eb5d4e23cc9a38647e2c1194..48de43f61f90e2610e04d04803b374ce } public boolean tadpoleRidable = false; -@@ -1658,6 +1704,7 @@ public class PurpurWorldConfig { +@@ -1660,6 +1706,7 @@ public class PurpurWorldConfig { public double traderLlamaJumpStrengthMax = 0.5D; public double traderLlamaMovementSpeedMin = 0.175D; public double traderLlamaMovementSpeedMax = 0.175D; @@ -889,7 +889,7 @@ index ff50c24f3a6e2dd0eb5d4e23cc9a38647e2c1194..48de43f61f90e2610e04d04803b374ce private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -1675,6 +1722,7 @@ public class PurpurWorldConfig { +@@ -1677,6 +1724,7 @@ public class PurpurWorldConfig { traderLlamaJumpStrengthMax = getDouble("mobs.trader_llama.attributes.jump_strength.max", traderLlamaJumpStrengthMax); traderLlamaMovementSpeedMin = getDouble("mobs.trader_llama.attributes.movement_speed.min", traderLlamaMovementSpeedMin); traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax); @@ -897,7 +897,7 @@ index ff50c24f3a6e2dd0eb5d4e23cc9a38647e2c1194..48de43f61f90e2610e04d04803b374ce } public boolean tropicalFishRidable = false; -@@ -1695,6 +1743,7 @@ public class PurpurWorldConfig { +@@ -1697,6 +1745,7 @@ public class PurpurWorldConfig { public boolean turtleRidableInWater = true; public boolean turtleControllable = true; public double turtleMaxHealth = 30.0D; @@ -905,7 +905,7 @@ index ff50c24f3a6e2dd0eb5d4e23cc9a38647e2c1194..48de43f61f90e2610e04d04803b374ce private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -1705,6 +1754,7 @@ public class PurpurWorldConfig { +@@ -1707,6 +1756,7 @@ public class PurpurWorldConfig { set("mobs.turtle.attributes.max_health", oldValue); } turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); @@ -913,7 +913,7 @@ index ff50c24f3a6e2dd0eb5d4e23cc9a38647e2c1194..48de43f61f90e2610e04d04803b374ce } public boolean vexRidable = false; -@@ -1732,6 +1782,7 @@ public class PurpurWorldConfig { +@@ -1734,6 +1784,7 @@ public class PurpurWorldConfig { public boolean villagerFollowEmeraldBlock = false; public boolean villagerCanBeLeashed = false; public boolean villagerCanBreed = true; @@ -921,7 +921,7 @@ index ff50c24f3a6e2dd0eb5d4e23cc9a38647e2c1194..48de43f61f90e2610e04d04803b374ce private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1745,6 +1796,7 @@ public class PurpurWorldConfig { +@@ -1747,6 +1798,7 @@ public class PurpurWorldConfig { villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock); villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); villagerCanBreed = getBoolean("mobs.villager.can-breed", villagerCanBreed); @@ -929,7 +929,7 @@ index ff50c24f3a6e2dd0eb5d4e23cc9a38647e2c1194..48de43f61f90e2610e04d04803b374ce } public boolean vindicatorRidable = false; -@@ -1856,6 +1908,7 @@ public class PurpurWorldConfig { +@@ -1858,6 +1910,7 @@ public class PurpurWorldConfig { public boolean wolfRidableInWater = true; public boolean wolfControllable = true; public double wolfMaxHealth = 8.0D; @@ -937,7 +937,7 @@ index ff50c24f3a6e2dd0eb5d4e23cc9a38647e2c1194..48de43f61f90e2610e04d04803b374ce private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -1866,6 +1919,7 @@ public class PurpurWorldConfig { +@@ -1868,6 +1921,7 @@ public class PurpurWorldConfig { set("mobs.wolf.attributes.max_health", oldValue); } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); diff --git a/patches/server/0109-Snow-Golem-rate-of-fire-config.patch b/patches/server/0109-Snow-Golem-rate-of-fire-config.patch index 0e9b27ee5..ea04237cc 100644 --- a/patches/server/0109-Snow-Golem-rate-of-fire-config.patch +++ b/patches/server/0109-Snow-Golem-rate-of-fire-config.patch @@ -23,10 +23,10 @@ index bd9dd01e9140c2ad0ab9859b9a455f73ab04a253..d3da7487f911ff791dca5f7b546dccda this.goalSelector.addGoal(3, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(4, new RandomLookAroundGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3ecf34286db35cebad22bf09bd1f15d61908a2a1..30635734e1109b0313039f01b46f0836eb5bdd70 100644 +index 68fa6b3492d9ad309f305560afe6f767c9c56fe0..7687b76b6a468b242835eb035781f6121b9477a8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1605,6 +1605,10 @@ public class PurpurWorldConfig { +@@ -1607,6 +1607,10 @@ public class PurpurWorldConfig { public double snowGolemMaxHealth = 4.0D; public boolean snowGolemDropsPumpkin = true; public boolean snowGolemPutPumpkinBack = false; @@ -37,7 +37,7 @@ index 3ecf34286db35cebad22bf09bd1f15d61908a2a1..30635734e1109b0313039f01b46f0836 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1618,6 +1622,10 @@ public class PurpurWorldConfig { +@@ -1620,6 +1624,10 @@ public class PurpurWorldConfig { snowGolemMaxHealth = getDouble("mobs.snow_golem.attributes.max_health", snowGolemMaxHealth); snowGolemDropsPumpkin = getBoolean("mobs.snow_golem.drop-pumpkin-when-sheared", snowGolemDropsPumpkin); snowGolemPutPumpkinBack = getBoolean("mobs.snow_golem.pumpkin-can-be-added-back", snowGolemPutPumpkinBack); diff --git a/patches/server/0111-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch b/patches/server/0111-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch index eed70111d..1649f9496 100644 --- a/patches/server/0111-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch +++ b/patches/server/0111-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch @@ -136,7 +136,7 @@ index cb1d91f9fe98f21c2afbe3894dfd9bca3bdd3ba6..d2703432af207c74ea8d298a784329c3 brain.setMemory(MemoryModuleType.SECONDARY_JOB_SITE, list); } else { diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 1754c88d9b3bdbce721062c564a5f61c2ad14e86..7fcf3cf145828b610dec15dcc2cf469a48de9317 100644 +index cf4950ae95e18f64856e4bce8e70772268f3fa3a..339918b33e825f20a174981c9d5fbda95f4706e7 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -224,7 +224,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -174,10 +174,10 @@ index ac70c2c03241e73943bd517a8c69dd05e0873634..0318663a824d2a9515f867a075d148c3 public static final VillagerProfession FISHERMAN = register("fisherman", PoiTypes.FISHERMAN, SoundEvents.VILLAGER_WORK_FISHERMAN); public static final VillagerProfession FLETCHER = register("fletcher", PoiTypes.FLETCHER, SoundEvents.VILLAGER_WORK_FLETCHER); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 30635734e1109b0313039f01b46f0836eb5bdd70..fe18b304ae649e93aefea3461a22151e7b7bdb40 100644 +index 7687b76b6a468b242835eb035781f6121b9477a8..476a91cb2449072f9c13bb881f2f439172f0e933 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1808,6 +1808,8 @@ public class PurpurWorldConfig { +@@ -1810,6 +1810,8 @@ public class PurpurWorldConfig { public boolean villagerCanBeLeashed = false; public boolean villagerCanBreed = true; public int villagerBreedingTicks = 6000; @@ -186,7 +186,7 @@ index 30635734e1109b0313039f01b46f0836eb5bdd70..fe18b304ae649e93aefea3461a22151e private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1822,6 +1824,8 @@ public class PurpurWorldConfig { +@@ -1824,6 +1826,8 @@ public class PurpurWorldConfig { villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); villagerCanBreed = getBoolean("mobs.villager.can-breed", villagerCanBreed); villagerBreedingTicks = getInt("mobs.villager.breeding-delay-ticks", villagerBreedingTicks); diff --git a/patches/server/0112-Toggle-for-Zombified-Piglin-death-always-counting-as.patch b/patches/server/0112-Toggle-for-Zombified-Piglin-death-always-counting-as.patch index 4596fd32d..38932b4da 100644 --- a/patches/server/0112-Toggle-for-Zombified-Piglin-death-always-counting-as.patch +++ b/patches/server/0112-Toggle-for-Zombified-Piglin-death-always-counting-as.patch @@ -35,10 +35,10 @@ index 764477c39e690d6373e17c77687809418e0de884..b2d77117309e81db60e7e50911247793 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fe18b304ae649e93aefea3461a22151e7b7bdb40..592ad59fb71d6d638301f5dd0c1b5b9f01fb1df8 100644 +index 476a91cb2449072f9c13bb881f2f439172f0e933..34a557f50cf5056592208fe0d9f9fb50f4b7e943 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2052,6 +2052,7 @@ public class PurpurWorldConfig { +@@ -2056,6 +2056,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyOnlyBaby = true; public double zombifiedPiglinJockeyChance = 0.05D; public boolean zombifiedPiglinJockeyTryExistingChickens = true; @@ -46,7 +46,7 @@ index fe18b304ae649e93aefea3461a22151e7b7bdb40..592ad59fb71d6d638301f5dd0c1b5b9f private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2066,5 +2067,6 @@ public class PurpurWorldConfig { +@@ -2070,5 +2071,6 @@ public class PurpurWorldConfig { zombifiedPiglinJockeyOnlyBaby = getBoolean("mobs.zombified_piglin.jockey.only-babies", zombifiedPiglinJockeyOnlyBaby); zombifiedPiglinJockeyChance = getDouble("mobs.zombified_piglin.jockey.chance", zombifiedPiglinJockeyChance); zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens); diff --git a/patches/server/0113-Configurable-chance-for-wolves-to-spawn-rabid.patch b/patches/server/0113-Configurable-chance-for-wolves-to-spawn-rabid.patch index b760916d9..ad39dfde8 100644 --- a/patches/server/0113-Configurable-chance-for-wolves-to-spawn-rabid.patch +++ b/patches/server/0113-Configurable-chance-for-wolves-to-spawn-rabid.patch @@ -200,7 +200,7 @@ index 39a923e48750bd960f64aad248c10dd390afc239..6a822abe936aed83da595980e0f69835 return super.mobInteract(player, hand); } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java -index e16459c9cfcac790edd6d912750d32c68387cbbc..890938ad866e2c588f3f819230ba121b0b436401 100644 +index 38b6d2c377800134de592a780b737b45c8096a11..449acd9dc983be1cd51208bc8f8d843d2ddaa923 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java @@ -57,4 +57,16 @@ public class CraftWolf extends CraftTameableAnimal implements Wolf { @@ -221,10 +221,10 @@ index e16459c9cfcac790edd6d912750d32c68387cbbc..890938ad866e2c588f3f819230ba121b + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 592ad59fb71d6d638301f5dd0c1b5b9f01fb1df8..0c0d5c6dd4d2ed8c5b71acc47fcc9faafd3212b7 100644 +index 34a557f50cf5056592208fe0d9f9fb50f4b7e943..50863c526d4ea0e171c326b8b989f92cf082fa96 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1937,6 +1937,8 @@ public class PurpurWorldConfig { +@@ -1939,6 +1939,8 @@ public class PurpurWorldConfig { public boolean wolfRidableInWater = true; public boolean wolfControllable = true; public double wolfMaxHealth = 8.0D; @@ -233,7 +233,7 @@ index 592ad59fb71d6d638301f5dd0c1b5b9f01fb1df8..0c0d5c6dd4d2ed8c5b71acc47fcc9faa public int wolfBreedingTicks = 6000; private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); -@@ -1948,6 +1950,8 @@ public class PurpurWorldConfig { +@@ -1950,6 +1952,8 @@ public class PurpurWorldConfig { set("mobs.wolf.attributes.max_health", oldValue); } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); diff --git a/patches/server/0114-Configurable-default-collar-color.patch b/patches/server/0114-Configurable-default-collar-color.patch index 1842260b8..e100904a4 100644 --- a/patches/server/0114-Configurable-default-collar-color.patch +++ b/patches/server/0114-Configurable-default-collar-color.patch @@ -43,7 +43,7 @@ index 6a822abe936aed83da595980e0f698354a205b0b..bbecb3894d0f4a24442e8833f4d828e6 protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0c0d5c6dd4d2ed8c5b71acc47fcc9faafd3212b7..96d21c69da492eb6646e3cc71029cbe6208c6406 100644 +index 50863c526d4ea0e171c326b8b989f92cf082fa96..9df131e8e3c14aedfafa491b4765dc05f468d01f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -621,6 +621,7 @@ public class PurpurWorldConfig { @@ -66,7 +66,7 @@ index 0c0d5c6dd4d2ed8c5b71acc47fcc9faafd3212b7..96d21c69da492eb6646e3cc71029cbe6 } public boolean caveSpiderRidable = false; -@@ -1937,6 +1943,7 @@ public class PurpurWorldConfig { +@@ -1939,6 +1945,7 @@ public class PurpurWorldConfig { public boolean wolfRidableInWater = true; public boolean wolfControllable = true; public double wolfMaxHealth = 8.0D; @@ -74,7 +74,7 @@ index 0c0d5c6dd4d2ed8c5b71acc47fcc9faafd3212b7..96d21c69da492eb6646e3cc71029cbe6 public boolean wolfMilkCuresRabies = true; public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; -@@ -1950,6 +1957,11 @@ public class PurpurWorldConfig { +@@ -1952,6 +1959,11 @@ public class PurpurWorldConfig { set("mobs.wolf.attributes.max_health", oldValue); } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); diff --git a/patches/server/0118-Striders-give-saddle-back.patch b/patches/server/0118-Striders-give-saddle-back.patch index dbf0cea34..defd1f5aa 100644 --- a/patches/server/0118-Striders-give-saddle-back.patch +++ b/patches/server/0118-Striders-give-saddle-back.patch @@ -29,10 +29,10 @@ index 10136a5062d154456c962e7d1a99c2dedbd568ed..64503362c42daa39dcfa270bc50b0e21 if (!this.level().isClientSide) { player.startRiding(this); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 74a210a911211d38be77a6d00a0c032c14f48aad..a877974c3b3336ae49da1bcf56b66427d1748c35 100644 +index ef40f177856981c16c667c202480591ad1334109..810745ee8b2f3dedf50533e31000ed29c2929718 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1711,6 +1711,7 @@ public class PurpurWorldConfig { +@@ -1713,6 +1713,7 @@ public class PurpurWorldConfig { public boolean striderControllable = true; public double striderMaxHealth = 20.0D; public int striderBreedingTicks = 6000; @@ -40,7 +40,7 @@ index 74a210a911211d38be77a6d00a0c032c14f48aad..a877974c3b3336ae49da1bcf56b66427 private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1722,6 +1723,7 @@ public class PurpurWorldConfig { +@@ -1724,6 +1725,7 @@ public class PurpurWorldConfig { } striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); diff --git a/patches/server/0122-Add-mobGriefing-bypass-to-everything-affected.patch b/patches/server/0122-Add-mobGriefing-bypass-to-everything-affected.patch index 04e831f29..ec43fcb65 100644 --- a/patches/server/0122-Add-mobGriefing-bypass-to-everything-affected.patch +++ b/patches/server/0122-Add-mobGriefing-bypass-to-everything-affected.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add mobGriefing bypass to everything affected diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index bb36602c78292e762e26fe23e9928609c4bb4271..704eccf1d65d650ce1f6709136c75133f9ef59be 100644 +index c46490fd0443ba0ea04679a31a637410600b2810..7e6fe9ee09b80d022bfc2cc87363142a10b980f3 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1802,7 +1802,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -18,7 +18,7 @@ index bb36602c78292e762e26fe23e9928609c4bb4271..704eccf1d65d650ce1f6709136c75133 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 1ce3ba7f703b5627e2761865c0e133dbf5df8712..4454241862598048abd4e8bf321f9a066be15067 100644 +index dd75a1115d02506f1e99688817cb724b22b3e696..54d1e9c9d98bbf8f408c3c9906d76c662ab2c90e 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -704,7 +704,7 @@ public abstract class Mob extends LivingEntity implements Targeting { @@ -374,7 +374,7 @@ index 18feb559f9fd157dd4a01faf2b2bb18df2a64675..9c834e3deed07eb70e6a57df2db732c1 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index be24ad68043d014d23879dfe4730c582a7b81689..499595ee7ab97559f562ecfbf4479a6b75506d9d 100644 +index 88609510c379d0e7d94f3d821f828ed0313a9fe3..1ee8dfb7d6efea66293cfd8059b8a84a77999fb2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -115,8 +115,11 @@ public class PurpurWorldConfig { @@ -613,7 +613,7 @@ index be24ad68043d014d23879dfe4730c582a7b81689..499595ee7ab97559f562ecfbf4479a6b } public boolean skeletonRidable = false; -@@ -1635,6 +1672,7 @@ public class PurpurWorldConfig { +@@ -1637,6 +1674,7 @@ public class PurpurWorldConfig { public int snowGolemSnowBallMax = 20; public float snowGolemSnowBallModifier = 10.0F; public double snowGolemAttackDistance = 1.25D; @@ -621,7 +621,7 @@ index be24ad68043d014d23879dfe4730c582a7b81689..499595ee7ab97559f562ecfbf4479a6b private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1652,6 +1690,7 @@ public class PurpurWorldConfig { +@@ -1654,6 +1692,7 @@ public class PurpurWorldConfig { snowGolemSnowBallMax = getInt("mobs.snow_golem.max-shoot-interval-ticks", snowGolemSnowBallMax); snowGolemSnowBallModifier = (float) getDouble("mobs.snow_golem.snow-ball-modifier", snowGolemSnowBallModifier); snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance); @@ -629,7 +629,7 @@ index be24ad68043d014d23879dfe4730c582a7b81689..499595ee7ab97559f562ecfbf4479a6b } public boolean snifferRidable = false; -@@ -1838,6 +1877,7 @@ public class PurpurWorldConfig { +@@ -1840,6 +1879,7 @@ public class PurpurWorldConfig { public int villagerBreedingTicks = 6000; public boolean villagerClericsFarmWarts = false; public boolean villagerClericFarmersThrowWarts = true; @@ -637,7 +637,7 @@ index be24ad68043d014d23879dfe4730c582a7b81689..499595ee7ab97559f562ecfbf4479a6b private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1854,6 +1894,7 @@ public class PurpurWorldConfig { +@@ -1856,6 +1896,7 @@ public class PurpurWorldConfig { villagerBreedingTicks = getInt("mobs.villager.breeding-delay-ticks", villagerBreedingTicks); villagerClericsFarmWarts = getBoolean("mobs.villager.clerics-farm-warts", villagerClericsFarmWarts); villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts); @@ -645,7 +645,7 @@ index be24ad68043d014d23879dfe4730c582a7b81689..499595ee7ab97559f562ecfbf4479a6b } public boolean vindicatorRidable = false; -@@ -1926,6 +1967,7 @@ public class PurpurWorldConfig { +@@ -1928,6 +1969,7 @@ public class PurpurWorldConfig { public double witherMaxHealth = 300.0D; public float witherHealthRegenAmount = 1.0f; public int witherHealthRegenDelay = 20; @@ -653,7 +653,7 @@ index be24ad68043d014d23879dfe4730c582a7b81689..499595ee7ab97559f562ecfbf4479a6b private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -1943,6 +1985,7 @@ public class PurpurWorldConfig { +@@ -1945,6 +1987,7 @@ public class PurpurWorldConfig { witherMaxHealth = getDouble("mobs.wither.attributes.max_health", witherMaxHealth); witherHealthRegenAmount = (float) getDouble("mobs.wither.health-regen-amount", witherHealthRegenAmount); witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay); @@ -661,7 +661,7 @@ index be24ad68043d014d23879dfe4730c582a7b81689..499595ee7ab97559f562ecfbf4479a6b } public boolean witherSkeletonRidable = false; -@@ -2014,6 +2057,7 @@ public class PurpurWorldConfig { +@@ -2016,6 +2059,7 @@ public class PurpurWorldConfig { public double zombieJockeyChance = 0.05D; public boolean zombieJockeyTryExistingChickens = true; public boolean zombieAggressiveTowardsVillagerWhenLagging = true; @@ -669,11 +669,11 @@ index be24ad68043d014d23879dfe4730c582a7b81689..499595ee7ab97559f562ecfbf4479a6b private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2029,6 +2073,7 @@ public class PurpurWorldConfig { +@@ -2031,6 +2075,7 @@ public class PurpurWorldConfig { zombieJockeyChance = getDouble("mobs.zombie.jockey.chance", zombieJockeyChance); zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens); zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging); + zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); } - public boolean zombieHorseRidableInWater = false; + public boolean zombieHorseRidable = false; diff --git a/patches/server/0128-Toggle-for-water-sensitive-mob-damage.patch b/patches/server/0128-Toggle-for-water-sensitive-mob-damage.patch index e4cb0c56d..f66339a28 100644 --- a/patches/server/0128-Toggle-for-water-sensitive-mob-damage.patch +++ b/patches/server/0128-Toggle-for-water-sensitive-mob-damage.patch @@ -126,7 +126,7 @@ index c501704251e5b23f697efc307ebdc906cd2e5acd..f76b0d92150fd985a8fc699f6f884527 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java -index 079fd78528377ee4236fb2e7189a5f0fc5ec4fb3..77746eeffdc612793a6c907f222753bce5cd0ed4 100644 +index 3f41698deb5b1d837832285e087aa0f82f16cd59..5533b667b983fe6f2375ca8f21c8580dc373628a 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java @@ -163,6 +163,11 @@ public class Dolphin extends WaterAnimal { @@ -142,7 +142,7 @@ index 079fd78528377ee4236fb2e7189a5f0fc5ec4fb3..77746eeffdc612793a6c907f222753bc @Override public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData, @Nullable CompoundTag entityNbt) { diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index 948760c9ee6ba921a7f1b4200fc77aa13f198984..7bd1177b58bd5ecc5659266eece39a49ec08ffa9 100644 +index cf58894de9804770ba1722e2c0b727d3a637bf9f..a1f13c54b7ded4b10fb4e6bd82a384d13446b62f 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java @@ -193,6 +193,11 @@ public class Fox extends Animal implements VariantHolder { @@ -206,7 +206,7 @@ index 3fe751839e4a1bc266b0d9508e1e3384e8f7f41e..c91ade7f4b1f04f12e38cf2c5fda1a92 return (Boolean) this.entityData.get(Ocelot.DATA_TRUSTING); } diff --git a/src/main/java/net/minecraft/world/entity/animal/Panda.java b/src/main/java/net/minecraft/world/entity/animal/Panda.java -index e91f950b64f80fb86795c570f7f119c159315472..632041e2804f98a1954cf1268c6fd0427696d4a3 100644 +index 0d5cc20029e1876b79927a89716e2ecc144791e3..20eb69e7d944b74a84570d23947e7e2a75d63f8d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Panda.java +++ b/src/main/java/net/minecraft/world/entity/animal/Panda.java @@ -151,6 +151,11 @@ public class Panda extends Animal { @@ -411,7 +411,7 @@ index bbecb3894d0f4a24442e8833f4d828e6173287da..f79dff635b09300f8d2cff0562f71587 protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index c217a4b78eb53af8b8c011bfabbbddcc31c88df4..8aae4bda1c39853c972bf17cd2ed5b940ef7ba27 100644 +index 9c71a3f88494d34ae02fd024f641a7af608f63fd..98721f3d2ed8e660f3afdbdc59fef93fb7d377af 100644 --- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java @@ -125,6 +125,11 @@ public class Axolotl extends Animal implements LerpingModel, VariantHolder brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index 46fec497e411e3160d9ae9553ae52654d10a9dd3..63c0f86469182de482b04a27741e4b6fe29f0e79 100644 +index 6d7b5cf3db81c4e42dda17757125d4a1c83c8c59..e118cfc34b05f6d4921a0903eca70be6b68bff4f 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -141,6 +141,11 @@ public class Zombie extends Monster { @@ -1085,7 +1085,7 @@ index 46fec497e411e3160d9ae9553ae52654d10a9dd3..63c0f86469182de482b04a27741e4b6f protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -index 01f6b7eb50870f9bcac9bbd3b6a87382d6aa1f1b..5933bff2db353644705f5e1cfec3b0f2dedbad87 100644 +index b71c47c275a3726eb5028c9524013ebc608a21ea..135ce8822ed7e3d6182755deca37a2c0531960c6 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java @@ -109,6 +109,11 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { @@ -1165,7 +1165,7 @@ index 04e54c241078e6cd6419a21ba1bf913fd3b413d1..b63d87df0f48dd63c89118f91b31dc4e return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 50.0D).add(Attributes.MOVEMENT_SPEED, (double)0.35F).add(Attributes.ATTACK_DAMAGE, 7.0D); } diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 7fcf3cf145828b610dec15dcc2cf469a48de9317..2215bd386a617996095f24192f05825d0201b2ec 100644 +index 339918b33e825f20a174981c9d5fbda95f4706e7..54897b889d053b8752fb4a4f5664e39c6a8954d3 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -190,6 +190,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -1181,7 +1181,7 @@ index 7fcf3cf145828b610dec15dcc2cf469a48de9317..2215bd386a617996095f24192f05825d public Brain getBrain() { return (Brain) super.getBrain(); // CraftBukkit - decompile error diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -index 31daa61db84fcb3cde7ec4b18b32aba350ab2cfb..502ff11b909537f98339d3bef49f324e69d2f0fe 100644 +index ad7a32169b0decad1d3a2bd98e25b07731a33d03..5a373ba4d9e404c064bc158718d02c0cd2aca548 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java @@ -97,6 +97,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill @@ -1197,7 +1197,7 @@ index 31daa61db84fcb3cde7ec4b18b32aba350ab2cfb..502ff11b909537f98339d3bef49f324e protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c1eec6135 100644 +index 7d576796981ce7b6a292499ed755d86c86bf51db..e8d642f0bffb2a12b91b125d3f0536d76fd285e9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -568,11 +568,13 @@ public class PurpurWorldConfig { @@ -1978,16 +1978,16 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c + skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); } - public boolean skeletonHorseRidableInWater = true; -@@ -1640,6 +1740,7 @@ public class PurpurWorldConfig { + public boolean skeletonHorseRidable = false; +@@ -1641,6 +1741,7 @@ public class PurpurWorldConfig { public double skeletonHorseJumpStrengthMax = 1.0D; public double skeletonHorseMovementSpeedMin = 0.2D; public double skeletonHorseMovementSpeedMax = 0.2D; + public boolean skeletonHorseTakeDamageFromWater = false; private void skeletonHorseSettings() { + skeletonHorseRidable = getBoolean("mobs.skeleton_horse.ridable", skeletonHorseRidable); skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); - skeletonHorseCanSwim = getBoolean("mobs.skeleton_horse.can-swim", skeletonHorseCanSwim); -@@ -1655,6 +1756,7 @@ public class PurpurWorldConfig { +@@ -1657,6 +1758,7 @@ public class PurpurWorldConfig { skeletonHorseJumpStrengthMax = getDouble("mobs.skeleton_horse.attributes.jump_strength.max", skeletonHorseJumpStrengthMax); skeletonHorseMovementSpeedMin = getDouble("mobs.skeleton_horse.attributes.movement_speed.min", skeletonHorseMovementSpeedMin); skeletonHorseMovementSpeedMax = getDouble("mobs.skeleton_horse.attributes.movement_speed.max", skeletonHorseMovementSpeedMax); @@ -1995,7 +1995,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c } public boolean slimeRidable = false; -@@ -1664,6 +1766,7 @@ public class PurpurWorldConfig { +@@ -1666,6 +1768,7 @@ public class PurpurWorldConfig { public String slimeAttackDamage = "size"; public Map slimeMaxHealthCache = new HashMap<>(); public Map slimeAttackDamageCache = new HashMap<>(); @@ -2003,7 +2003,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -1677,6 +1780,7 @@ public class PurpurWorldConfig { +@@ -1679,6 +1782,7 @@ public class PurpurWorldConfig { slimeAttackDamage = getString("mobs.slime.attributes.attack_damage", slimeAttackDamage); slimeMaxHealthCache.clear(); slimeAttackDamageCache.clear(); @@ -2011,7 +2011,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c } public boolean snowGolemRidable = false; -@@ -1691,6 +1795,7 @@ public class PurpurWorldConfig { +@@ -1693,6 +1797,7 @@ public class PurpurWorldConfig { public float snowGolemSnowBallModifier = 10.0F; public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; @@ -2019,7 +2019,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1709,6 +1814,7 @@ public class PurpurWorldConfig { +@@ -1711,6 +1816,7 @@ public class PurpurWorldConfig { snowGolemSnowBallModifier = (float) getDouble("mobs.snow_golem.snow-ball-modifier", snowGolemSnowBallModifier); snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance); snowGolemBypassMobGriefing = getBoolean("mobs.snow_golem.bypass-mob-griefing", snowGolemBypassMobGriefing); @@ -2027,7 +2027,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c } public boolean snifferRidable = false; -@@ -1730,6 +1836,7 @@ public class PurpurWorldConfig { +@@ -1732,6 +1838,7 @@ public class PurpurWorldConfig { public boolean squidImmuneToEAR = true; public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; @@ -2035,7 +2035,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1742,12 +1849,14 @@ public class PurpurWorldConfig { +@@ -1744,12 +1851,14 @@ public class PurpurWorldConfig { squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); squidsCanFly = getBoolean("mobs.squid.can-fly", squidsCanFly); @@ -2050,7 +2050,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -1758,12 +1867,14 @@ public class PurpurWorldConfig { +@@ -1760,12 +1869,14 @@ public class PurpurWorldConfig { set("mobs.spider.attributes.max_health", oldValue); } spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth); @@ -2065,7 +2065,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -1774,6 +1885,7 @@ public class PurpurWorldConfig { +@@ -1776,6 +1887,7 @@ public class PurpurWorldConfig { set("mobs.stray.attributes.max_health", oldValue); } strayMaxHealth = getDouble("mobs.stray.attributes.max_health", strayMaxHealth); @@ -2073,7 +2073,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c } public boolean striderRidable = false; -@@ -1782,6 +1894,7 @@ public class PurpurWorldConfig { +@@ -1784,6 +1896,7 @@ public class PurpurWorldConfig { public double striderMaxHealth = 20.0D; public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; @@ -2081,7 +2081,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1794,6 +1907,7 @@ public class PurpurWorldConfig { +@@ -1796,6 +1909,7 @@ public class PurpurWorldConfig { striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); striderGiveSaddleBack = getBoolean("mobs.strider.give-saddle-back", striderGiveSaddleBack); @@ -2089,7 +2089,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c } public boolean tadpoleRidable = false; -@@ -1815,6 +1929,7 @@ public class PurpurWorldConfig { +@@ -1817,6 +1931,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMin = 0.175D; public double traderLlamaMovementSpeedMax = 0.175D; public int traderLlamaBreedingTicks = 6000; @@ -2097,7 +2097,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -1833,11 +1948,13 @@ public class PurpurWorldConfig { +@@ -1835,11 +1950,13 @@ public class PurpurWorldConfig { traderLlamaMovementSpeedMin = getDouble("mobs.trader_llama.attributes.movement_speed.min", traderLlamaMovementSpeedMin); traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax); traderLlamaBreedingTicks = getInt("mobs.trader_llama.breeding-delay-ticks", traderLlamaBreedingTicks); @@ -2111,7 +2111,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); tropicalFishControllable = getBoolean("mobs.tropical_fish.controllable", tropicalFishControllable); -@@ -1847,6 +1964,7 @@ public class PurpurWorldConfig { +@@ -1849,6 +1966,7 @@ public class PurpurWorldConfig { set("mobs.tropical_fish.attributes.max_health", oldValue); } tropicalFishMaxHealth = getDouble("mobs.tropical_fish.attributes.max_health", tropicalFishMaxHealth); @@ -2119,7 +2119,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c } public boolean turtleRidable = false; -@@ -1854,6 +1972,7 @@ public class PurpurWorldConfig { +@@ -1856,6 +1974,7 @@ public class PurpurWorldConfig { public boolean turtleControllable = true; public double turtleMaxHealth = 30.0D; public int turtleBreedingTicks = 6000; @@ -2127,7 +2127,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -1865,6 +1984,7 @@ public class PurpurWorldConfig { +@@ -1867,6 +1986,7 @@ public class PurpurWorldConfig { } turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); turtleBreedingTicks = getInt("mobs.turtle.breeding-delay-ticks", turtleBreedingTicks); @@ -2135,7 +2135,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c } public boolean vexRidable = false; -@@ -1872,6 +1992,7 @@ public class PurpurWorldConfig { +@@ -1874,6 +1994,7 @@ public class PurpurWorldConfig { public boolean vexControllable = true; public double vexMaxY = 320D; public double vexMaxHealth = 14.0D; @@ -2143,7 +2143,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -1883,6 +2004,7 @@ public class PurpurWorldConfig { +@@ -1885,6 +2006,7 @@ public class PurpurWorldConfig { set("mobs.vex.attributes.max_health", oldValue); } vexMaxHealth = getDouble("mobs.vex.attributes.max_health", vexMaxHealth); @@ -2151,7 +2151,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c } public boolean villagerRidable = false; -@@ -1896,6 +2018,7 @@ public class PurpurWorldConfig { +@@ -1898,6 +2020,7 @@ public class PurpurWorldConfig { public boolean villagerClericsFarmWarts = false; public boolean villagerClericFarmersThrowWarts = true; public boolean villagerBypassMobGriefing = false; @@ -2159,7 +2159,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1913,6 +2036,7 @@ public class PurpurWorldConfig { +@@ -1915,6 +2038,7 @@ public class PurpurWorldConfig { villagerClericsFarmWarts = getBoolean("mobs.villager.clerics-farm-warts", villagerClericsFarmWarts); villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts); villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); @@ -2167,7 +2167,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c } public boolean vindicatorRidable = false; -@@ -1920,6 +2044,7 @@ public class PurpurWorldConfig { +@@ -1922,6 +2046,7 @@ public class PurpurWorldConfig { public boolean vindicatorControllable = true; public double vindicatorMaxHealth = 24.0D; public double vindicatorJohnnySpawnChance = 0D; @@ -2175,7 +2175,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -1931,6 +2056,7 @@ public class PurpurWorldConfig { +@@ -1933,6 +2058,7 @@ public class PurpurWorldConfig { } vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); vindicatorJohnnySpawnChance = getDouble("mobs.vindicator.johnny.spawn-chance", vindicatorJohnnySpawnChance); @@ -2183,7 +2183,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c } public boolean wanderingTraderRidable = false; -@@ -1939,6 +2065,7 @@ public class PurpurWorldConfig { +@@ -1941,6 +2067,7 @@ public class PurpurWorldConfig { public double wanderingTraderMaxHealth = 20.0D; public boolean wanderingTraderFollowEmeraldBlock = false; public boolean wanderingTraderCanBeLeashed = false; @@ -2191,7 +2191,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -1951,6 +2078,7 @@ public class PurpurWorldConfig { +@@ -1953,6 +2080,7 @@ public class PurpurWorldConfig { wanderingTraderMaxHealth = getDouble("mobs.wandering_trader.attributes.max_health", wanderingTraderMaxHealth); wanderingTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", wanderingTraderFollowEmeraldBlock); wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); @@ -2199,7 +2199,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c } public boolean wardenRidable = false; -@@ -1966,6 +2094,7 @@ public class PurpurWorldConfig { +@@ -1968,6 +2096,7 @@ public class PurpurWorldConfig { public boolean witchRidableInWater = true; public boolean witchControllable = true; public double witchMaxHealth = 26.0D; @@ -2207,7 +2207,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -1976,6 +2105,7 @@ public class PurpurWorldConfig { +@@ -1978,6 +2107,7 @@ public class PurpurWorldConfig { set("mobs.witch.attributes.max_health", oldValue); } witchMaxHealth = getDouble("mobs.witch.attributes.max_health", witchMaxHealth); @@ -2215,7 +2215,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c } public boolean witherRidable = false; -@@ -1986,6 +2116,7 @@ public class PurpurWorldConfig { +@@ -1988,6 +2118,7 @@ public class PurpurWorldConfig { public float witherHealthRegenAmount = 1.0f; public int witherHealthRegenDelay = 20; public boolean witherBypassMobGriefing = false; @@ -2223,7 +2223,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2004,12 +2135,14 @@ public class PurpurWorldConfig { +@@ -2006,12 +2137,14 @@ public class PurpurWorldConfig { witherHealthRegenAmount = (float) getDouble("mobs.wither.health-regen-amount", witherHealthRegenAmount); witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay); witherBypassMobGriefing = getBoolean("mobs.wither.bypass-mob-griefing", witherBypassMobGriefing); @@ -2238,7 +2238,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -2020,6 +2153,7 @@ public class PurpurWorldConfig { +@@ -2022,6 +2155,7 @@ public class PurpurWorldConfig { set("mobs.wither_skeleton.attributes.max_health", oldValue); } witherSkeletonMaxHealth = getDouble("mobs.wither_skeleton.attributes.max_health", witherSkeletonMaxHealth); @@ -2246,7 +2246,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c } public boolean wolfRidable = false; -@@ -2030,6 +2164,7 @@ public class PurpurWorldConfig { +@@ -2032,6 +2166,7 @@ public class PurpurWorldConfig { public boolean wolfMilkCuresRabies = true; public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; @@ -2254,7 +2254,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -2048,12 +2183,14 @@ public class PurpurWorldConfig { +@@ -2050,12 +2185,14 @@ public class PurpurWorldConfig { wolfMilkCuresRabies = getBoolean("mobs.wolf.milk-cures-rabid-wolves", wolfMilkCuresRabies); wolfNaturalRabid = getDouble("mobs.wolf.spawn-rabid-chance", wolfNaturalRabid); wolfBreedingTicks = getInt("mobs.wolf.breeding-delay-ticks", wolfBreedingTicks); @@ -2269,7 +2269,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -2064,6 +2201,7 @@ public class PurpurWorldConfig { +@@ -2066,6 +2203,7 @@ public class PurpurWorldConfig { set("mobs.zoglin.attributes.max_health", oldValue); } zoglinMaxHealth = getDouble("mobs.zoglin.attributes.max_health", zoglinMaxHealth); @@ -2277,7 +2277,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c } public boolean zombieRidable = false; -@@ -2076,6 +2214,7 @@ public class PurpurWorldConfig { +@@ -2078,6 +2216,7 @@ public class PurpurWorldConfig { public boolean zombieJockeyTryExistingChickens = true; public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; @@ -2285,23 +2285,23 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2092,6 +2231,7 @@ public class PurpurWorldConfig { +@@ -2094,6 +2233,7 @@ public class PurpurWorldConfig { zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens); zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging); zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); + zombieTakeDamageFromWater = getBoolean("mobs.zombie.takes-damage-from-water", zombieTakeDamageFromWater); } - public boolean zombieHorseRidableInWater = false; -@@ -2103,6 +2243,7 @@ public class PurpurWorldConfig { + public boolean zombieHorseRidable = false; +@@ -2106,6 +2246,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMin = 0.2D; public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; + public boolean zombieHorseTakeDamageFromWater = false; private void zombieHorseSettings() { + zombieHorseRidable = getBoolean("mobs.zombie_horse.ridable", zombieHorseRidable); zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); - zombieHorseCanSwim = getBoolean("mobs.zombie_horse.can-swim", zombieHorseCanSwim); -@@ -2119,6 +2260,7 @@ public class PurpurWorldConfig { +@@ -2123,6 +2264,7 @@ public class PurpurWorldConfig { zombieHorseMovementSpeedMin = getDouble("mobs.zombie_horse.attributes.movement_speed.min", zombieHorseMovementSpeedMin); zombieHorseMovementSpeedMax = getDouble("mobs.zombie_horse.attributes.movement_speed.max", zombieHorseMovementSpeedMax); zombieHorseSpawnChance = getDouble("mobs.zombie_horse.spawn-chance", zombieHorseSpawnChance); @@ -2309,7 +2309,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c } public boolean zombieVillagerRidable = false; -@@ -2129,6 +2271,7 @@ public class PurpurWorldConfig { +@@ -2133,6 +2275,7 @@ public class PurpurWorldConfig { public boolean zombieVillagerJockeyOnlyBaby = true; public double zombieVillagerJockeyChance = 0.05D; public boolean zombieVillagerJockeyTryExistingChickens = true; @@ -2317,7 +2317,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2143,6 +2286,7 @@ public class PurpurWorldConfig { +@@ -2147,6 +2290,7 @@ public class PurpurWorldConfig { zombieVillagerJockeyOnlyBaby = getBoolean("mobs.zombie_villager.jockey.only-babies", zombieVillagerJockeyOnlyBaby); zombieVillagerJockeyChance = getDouble("mobs.zombie_villager.jockey.chance", zombieVillagerJockeyChance); zombieVillagerJockeyTryExistingChickens = getBoolean("mobs.zombie_villager.jockey.try-existing-chickens", zombieVillagerJockeyTryExistingChickens); @@ -2325,7 +2325,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c } public boolean zombifiedPiglinRidable = false; -@@ -2154,6 +2298,7 @@ public class PurpurWorldConfig { +@@ -2158,6 +2302,7 @@ public class PurpurWorldConfig { public double zombifiedPiglinJockeyChance = 0.05D; public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; @@ -2333,7 +2333,7 @@ index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2169,5 +2314,6 @@ public class PurpurWorldConfig { +@@ -2173,5 +2318,6 @@ public class PurpurWorldConfig { zombifiedPiglinJockeyChance = getDouble("mobs.zombified_piglin.jockey.chance", zombifiedPiglinJockeyChance); zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens); zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); diff --git a/patches/server/0131-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch b/patches/server/0131-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch index f9596e176..4ec09566e 100644 --- a/patches/server/0131-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch +++ b/patches/server/0131-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configs for if Wither/Ender Dragon can ride vehicles diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index 1588c4ec1ff1d9f1eca8b6c7971a2cdd1f98efb3..82d81fd2edff9df0bb4ff116d9274887a316d0a8 100644 +index 20aa7cdf10284c14a2d623aefb061b6197d66d27..d706a20583d24fbd739a680538ba3324b4200d94 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java @@ -1187,6 +1187,7 @@ public class EnderDragon extends Mob implements Enemy { @@ -29,7 +29,7 @@ index 76f88b96e4965e61a620d8e8809411a0711bf02e..8d882e6ef4e199258866f30f5548a6fe } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index af6ef0660e5d0a6c5c2033105ee29328dd06418a..55941d33fd619db4f25e29d51b1bc8a522bb29ba 100644 +index f7ca9e256524e1b080631d7cda5ed80edeeaf73b..1af0f19760426f108d32d202b087323d0ef60845 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -947,6 +947,7 @@ public class PurpurWorldConfig { @@ -48,7 +48,7 @@ index af6ef0660e5d0a6c5c2033105ee29328dd06418a..55941d33fd619db4f25e29d51b1bc8a5 } public boolean endermanRidable = false; -@@ -2156,6 +2158,7 @@ public class PurpurWorldConfig { +@@ -2158,6 +2160,7 @@ public class PurpurWorldConfig { public int witherHealthRegenDelay = 20; public boolean witherBypassMobGriefing = false; public boolean witherTakeDamageFromWater = false; @@ -56,7 +56,7 @@ index af6ef0660e5d0a6c5c2033105ee29328dd06418a..55941d33fd619db4f25e29d51b1bc8a5 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2175,6 +2178,7 @@ public class PurpurWorldConfig { +@@ -2177,6 +2180,7 @@ public class PurpurWorldConfig { witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay); witherBypassMobGriefing = getBoolean("mobs.wither.bypass-mob-griefing", witherBypassMobGriefing); witherTakeDamageFromWater = getBoolean("mobs.wither.takes-damage-from-water", witherTakeDamageFromWater); diff --git a/patches/server/0145-Add-config-for-villager-trading.patch b/patches/server/0145-Add-config-for-villager-trading.patch index 2edc663a1..b4c1fdee3 100644 --- a/patches/server/0145-Add-config-for-villager-trading.patch +++ b/patches/server/0145-Add-config-for-villager-trading.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add config for villager trading diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 2215bd386a617996095f24192f05825d0201b2ec..c7047bacce4851956e3732f0a73be423cc46ee54 100644 +index 54897b889d053b8752fb4a4f5664e39c6a8954d3..28d940393f387387fa0a2b0dea8de24324e2e55e 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -372,7 +372,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -18,7 +18,7 @@ index 2215bd386a617996095f24192f05825d0201b2ec..c7047bacce4851956e3732f0a73be423 } diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -index 502ff11b909537f98339d3bef49f324e69d2f0fe..bb18a29281df797e05d828caed0a604329209cba 100644 +index 5a373ba4d9e404c064bc158718d02c0cd2aca548..d672c1e381e5c4a4b79a1dfb96f1410ec35cb1b5 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java @@ -153,7 +153,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill @@ -31,10 +31,10 @@ index 502ff11b909537f98339d3bef49f324e69d2f0fe..bb18a29281df797e05d828caed0a6043 this.openTradingScreen(player, this.getDisplayName(), 1); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4cc6a3bdcb5eabfe2ee441ec41bd2cfdfacf0000..0eb757ba6523e23271a08ec8af66fd6fb581ce27 100644 +index bed3d00422b914c99c3e598a392543e84f58df61..fce3d4c4af444860c72b5058fcd7276838299f89 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2123,6 +2123,7 @@ public class PurpurWorldConfig { +@@ -2125,6 +2125,7 @@ public class PurpurWorldConfig { public boolean villagerClericFarmersThrowWarts = true; public boolean villagerBypassMobGriefing = false; public boolean villagerTakeDamageFromWater = false; @@ -42,7 +42,7 @@ index 4cc6a3bdcb5eabfe2ee441ec41bd2cfdfacf0000..0eb757ba6523e23271a08ec8af66fd6f private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2141,6 +2142,7 @@ public class PurpurWorldConfig { +@@ -2143,6 +2144,7 @@ public class PurpurWorldConfig { villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts); villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); @@ -50,7 +50,7 @@ index 4cc6a3bdcb5eabfe2ee441ec41bd2cfdfacf0000..0eb757ba6523e23271a08ec8af66fd6f } public boolean vindicatorRidable = false; -@@ -2170,6 +2172,7 @@ public class PurpurWorldConfig { +@@ -2172,6 +2174,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderFollowEmeraldBlock = false; public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderTakeDamageFromWater = false; @@ -58,7 +58,7 @@ index 4cc6a3bdcb5eabfe2ee441ec41bd2cfdfacf0000..0eb757ba6523e23271a08ec8af66fd6f private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2183,6 +2186,7 @@ public class PurpurWorldConfig { +@@ -2185,6 +2188,7 @@ public class PurpurWorldConfig { wanderingTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", wanderingTraderFollowEmeraldBlock); wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); wanderingTraderTakeDamageFromWater = getBoolean("mobs.wandering_trader.takes-damage-from-water", wanderingTraderTakeDamageFromWater); diff --git a/patches/server/0158-Config-for-wither-explosion-radius.patch b/patches/server/0158-Config-for-wither-explosion-radius.patch index 623482c4d..95b9c519a 100644 --- a/patches/server/0158-Config-for-wither-explosion-radius.patch +++ b/patches/server/0158-Config-for-wither-explosion-radius.patch @@ -18,10 +18,10 @@ index f40ab9d5b18c189ba9b572e49243640bd44362d1..b4687453256ead43cf5288994316c7bf if (!event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b71f78d71d88e051cb12bf1cf09abb909a4d0465..714e605d56a35c69c057fa810e6a18649cb8cba0 100644 +index 18143874afd0fb7b6fdc7f1471368bced0dc39d5..fa3d2dbea60d7d40e30d7c8205c97f3a44b6f948 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2290,6 +2290,7 @@ public class PurpurWorldConfig { +@@ -2292,6 +2292,7 @@ public class PurpurWorldConfig { public boolean witherBypassMobGriefing = false; public boolean witherTakeDamageFromWater = false; public boolean witherCanRideVehicles = false; @@ -29,7 +29,7 @@ index b71f78d71d88e051cb12bf1cf09abb909a4d0465..714e605d56a35c69c057fa810e6a1864 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2310,6 +2311,7 @@ public class PurpurWorldConfig { +@@ -2312,6 +2313,7 @@ public class PurpurWorldConfig { witherBypassMobGriefing = getBoolean("mobs.wither.bypass-mob-griefing", witherBypassMobGriefing); witherTakeDamageFromWater = getBoolean("mobs.wither.takes-damage-from-water", witherTakeDamageFromWater); witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles); diff --git a/patches/server/0186-Configurable-hunger-starvation-damage.patch b/patches/server/0186-Configurable-hunger-starvation-damage.patch index 70fe518bd..2f1327761 100644 --- a/patches/server/0186-Configurable-hunger-starvation-damage.patch +++ b/patches/server/0186-Configurable-hunger-starvation-damage.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable hunger starvation damage diff --git a/src/main/java/net/minecraft/world/food/FoodData.java b/src/main/java/net/minecraft/world/food/FoodData.java -index 31ec6022b305df0ae02364c916ecf18425a0bc36..e54af9ff2a786e919b8261aa27509be942e70261 100644 +index 2840c0b16d9b8147703f34bac5a8aa21f82e6e44..e8079d126e6c0cf0b15c01afb6498922ee05964c 100644 --- a/src/main/java/net/minecraft/world/food/FoodData.java +++ b/src/main/java/net/minecraft/world/food/FoodData.java @@ -102,7 +102,7 @@ public class FoodData { @@ -18,10 +18,10 @@ index 31ec6022b305df0ae02364c916ecf18425a0bc36..e54af9ff2a786e919b8261aa27509be9 this.tickTimer = 0; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e49cd59e4fc687c9365d722f12948378e29b9327..9061a6819cbe7d9da35ff5f8fd8c49bb1128d346 100644 +index 111cba29dfd34d3953f65846bb0c453033e80113..0152466a72847518a4b76616aa98694378c24104 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2583,4 +2583,9 @@ public class PurpurWorldConfig { +@@ -2587,4 +2587,9 @@ public class PurpurWorldConfig { zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); zombifiedPiglinTakeDamageFromWater = getBoolean("mobs.zombified_piglin.takes-damage-from-water", zombifiedPiglinTakeDamageFromWater); } diff --git a/patches/server/0200-Customizeable-Zombie-Villager-curing-times.patch b/patches/server/0200-Customizeable-Zombie-Villager-curing-times.patch index 3c025c5b7..36a60560d 100644 --- a/patches/server/0200-Customizeable-Zombie-Villager-curing-times.patch +++ b/patches/server/0200-Customizeable-Zombie-Villager-curing-times.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Customizeable Zombie Villager curing times diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -index 5933bff2db353644705f5e1cfec3b0f2dedbad87..ecf41531855e1f60d9739ac6d2d82df7794f072f 100644 +index 135ce8822ed7e3d6182755deca37a2c0531960c6..6a85de8af9b260e92b4ccffa2ae3503cd29b0b98 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java @@ -221,7 +221,7 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { @@ -18,10 +18,10 @@ index 5933bff2db353644705f5e1cfec3b0f2dedbad87..ecf41531855e1f60d9739ac6d2d82df7 return InteractionResult.SUCCESS; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8cece9543a87ac86a8320fef4a23b39dbc76ab5c..b2f365ab51b56a83ed7ea67c921c163c3511b834 100644 +index b74734549b55ac08f67496b455b62bf65ae21ffa..78b57bf24e0ec6a4e5e4e1f56deb62480e8fd467 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2770,6 +2770,8 @@ public class PurpurWorldConfig { +@@ -2774,6 +2774,8 @@ public class PurpurWorldConfig { public double zombieVillagerJockeyChance = 0.05D; public boolean zombieVillagerJockeyTryExistingChickens = true; public boolean zombieVillagerTakeDamageFromWater = false; @@ -30,7 +30,7 @@ index 8cece9543a87ac86a8320fef4a23b39dbc76ab5c..b2f365ab51b56a83ed7ea67c921c163c private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2785,6 +2787,8 @@ public class PurpurWorldConfig { +@@ -2789,6 +2791,8 @@ public class PurpurWorldConfig { zombieVillagerJockeyChance = getDouble("mobs.zombie_villager.jockey.chance", zombieVillagerJockeyChance); zombieVillagerJockeyTryExistingChickens = getBoolean("mobs.zombie_villager.jockey.try-existing-chickens", zombieVillagerJockeyTryExistingChickens); zombieVillagerTakeDamageFromWater = getBoolean("mobs.zombie_villager.takes-damage-from-water", zombieVillagerTakeDamageFromWater); diff --git a/patches/server/0202-Toggle-for-Wither-s-spawn-sound.patch b/patches/server/0202-Toggle-for-Wither-s-spawn-sound.patch index d771ca331..ba9f0efda 100644 --- a/patches/server/0202-Toggle-for-Wither-s-spawn-sound.patch +++ b/patches/server/0202-Toggle-for-Wither-s-spawn-sound.patch @@ -18,10 +18,10 @@ index ff5d08f0cf323606ca2eb8bef3f487c7a86029e2..5bf7a6ecd58612c8502ed747263b6c0e // this.level().globalLevelEvent(1023, new BlockPosition(this), 0); int viewDistance = ((ServerLevel) this.level()).getCraftServer().getViewDistance() * 16; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 13aa8ae8f33834793adf18c12541c2ecd2d0699f..7670e4e1291e8c48b960ee44977d4850b470a81e 100644 +index 9a1b71bf2d33ba979dbfbc17b178cf6f40755ea5..06566fb9555c34718dad810b06c53d1020671f82 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2617,6 +2617,7 @@ public class PurpurWorldConfig { +@@ -2619,6 +2619,7 @@ public class PurpurWorldConfig { public boolean witherTakeDamageFromWater = false; public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; @@ -29,7 +29,7 @@ index 13aa8ae8f33834793adf18c12541c2ecd2d0699f..7670e4e1291e8c48b960ee44977d4850 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2638,6 +2639,7 @@ public class PurpurWorldConfig { +@@ -2640,6 +2641,7 @@ public class PurpurWorldConfig { witherTakeDamageFromWater = getBoolean("mobs.wither.takes-damage-from-water", witherTakeDamageFromWater); witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles); witherExplosionRadius = (float) getDouble("mobs.wither.explosion-radius", witherExplosionRadius); diff --git a/patches/server/0205-Conduit-behavior-configuration.patch b/patches/server/0205-Conduit-behavior-configuration.patch index d9255aa2c..6add5b67a 100644 --- a/patches/server/0205-Conduit-behavior-configuration.patch +++ b/patches/server/0205-Conduit-behavior-configuration.patch @@ -77,10 +77,10 @@ index 963a596154091b79ca139af6274aa323518ad1ad..4dcac3899a500d8586580bcfd5b4516e }); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f64c758f51134e8102ca4092bc313eefd346d211..5fd3e6bab03a2adcb776720b242c902b1330779e 100644 +index 1de902f3efaa1b685e6a38eff2b5838f7ff32f8c..a44e8a0a7eea841f6c2ed1a7c2fae960ed8e5974 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2836,4 +2836,27 @@ public class PurpurWorldConfig { +@@ -2840,4 +2840,27 @@ public class PurpurWorldConfig { private void hungerSettings() { hungerStarvationDamage = (float) getDouble("hunger.starvation-damage", hungerStarvationDamage); } diff --git a/patches/server/0206-Cauldron-fill-chances.patch b/patches/server/0206-Cauldron-fill-chances.patch index dfe78e80d..b82984265 100644 --- a/patches/server/0206-Cauldron-fill-chances.patch +++ b/patches/server/0206-Cauldron-fill-chances.patch @@ -47,10 +47,10 @@ index cd943997f11f5ea5c600fdc6db96043fb0fa713c..4adeda49a2e422e11f885bffb311653d if (dripChance < f1) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5fd3e6bab03a2adcb776720b242c902b1330779e..909e6bb2781637e5f4c2525371de2ad0b5524afe 100644 +index a44e8a0a7eea841f6c2ed1a7c2fae960ed8e5974..86306d03a4212bca0dbe990cf9f6a3854c1f55e5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2859,4 +2859,15 @@ public class PurpurWorldConfig { +@@ -2863,4 +2863,15 @@ public class PurpurWorldConfig { }); conduitBlocks = conduitBlockList.toArray(Block[]::new); } diff --git a/patches/server/0222-Add-option-to-disable-zombie-villagers-cure.patch b/patches/server/0222-Add-option-to-disable-zombie-villagers-cure.patch index 46f05ff4b..35f8d25f6 100644 --- a/patches/server/0222-Add-option-to-disable-zombie-villagers-cure.patch +++ b/patches/server/0222-Add-option-to-disable-zombie-villagers-cure.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add option to disable zombie villagers cure diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -index ecf41531855e1f60d9739ac6d2d82df7794f072f..4bac02d30ec28ea0bce069f0f915b660b99b122d 100644 +index 6a85de8af9b260e92b4ccffa2ae3503cd29b0b98..faf03e2c69b6b4ee7d7425322b5b19974e37cb85 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java @@ -215,7 +215,7 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { @@ -18,10 +18,10 @@ index ecf41531855e1f60d9739ac6d2d82df7794f072f..4bac02d30ec28ea0bce069f0f915b660 itemstack.shrink(1); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 51350d67992bba19be24bfbc75968cae29ca5d98..cbf30293766899b7aa66dc922ba76395feca1094 100644 +index f93992b7ae14d0e3dc5bfc3036e40cba2a0c89c9..48b21a71c25974668600cee9437cc8214f47b906 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2836,6 +2836,7 @@ public class PurpurWorldConfig { +@@ -2840,6 +2840,7 @@ public class PurpurWorldConfig { public boolean zombieVillagerTakeDamageFromWater = false; public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; @@ -29,7 +29,7 @@ index 51350d67992bba19be24bfbc75968cae29ca5d98..cbf30293766899b7aa66dc922ba76395 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2853,6 +2854,7 @@ public class PurpurWorldConfig { +@@ -2857,6 +2858,7 @@ public class PurpurWorldConfig { zombieVillagerTakeDamageFromWater = getBoolean("mobs.zombie_villager.takes-damage-from-water", zombieVillagerTakeDamageFromWater); zombieVillagerCuringTimeMin = getInt("mobs.zombie_villager.curing_time.min", zombieVillagerCuringTimeMin); zombieVillagerCuringTimeMax = getInt("mobs.zombie_villager.curing_time.max", zombieVillagerCuringTimeMax); diff --git a/patches/server/0226-Mobs-always-drop-experience.patch b/patches/server/0226-Mobs-always-drop-experience.patch index dddf1ca3b..74bcf2133 100644 --- a/patches/server/0226-Mobs-always-drop-experience.patch +++ b/patches/server/0226-Mobs-always-drop-experience.patch @@ -117,7 +117,7 @@ index 3c12e179861b5514e081d0db1664f7173955629c..6d00b3cd4a9cb0fc8a9e9c27f37429a2 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java -index b6342637f1b42b6368dcda17eea4b39a22ec3b79..4c9c07d470357c35bd5ba3c21437a2c44c52811e 100644 +index 9a1e9a69adf97ab92d9df817716750b7da6e6742..1807c7bac6f5012da8130dd41edeb9dd4df32a47 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java @@ -169,6 +169,11 @@ public class Dolphin extends WaterAnimal { @@ -133,7 +133,7 @@ index b6342637f1b42b6368dcda17eea4b39a22ec3b79..4c9c07d470357c35bd5ba3c21437a2c4 @Override public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData, @Nullable CompoundTag entityNbt) { diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index 7bd1177b58bd5ecc5659266eece39a49ec08ffa9..39c982f83a8b5b0787fc8dd48a0c11e5ad452bb0 100644 +index a1f13c54b7ded4b10fb4e6bd82a384d13446b62f..075554f28dab5809d0f2d346bad40efc16b38371 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java @@ -198,6 +198,11 @@ public class Fox extends Animal implements VariantHolder { @@ -197,7 +197,7 @@ index c91ade7f4b1f04f12e38cf2c5fda1a92b129bec8..af275fc579d66bb098c08e88e4186846 return (Boolean) this.entityData.get(Ocelot.DATA_TRUSTING); } diff --git a/src/main/java/net/minecraft/world/entity/animal/Panda.java b/src/main/java/net/minecraft/world/entity/animal/Panda.java -index 632041e2804f98a1954cf1268c6fd0427696d4a3..505469cf6b7fa66c6cbac73a49e4eec850d5bfec 100644 +index 20eb69e7d944b74a84570d23947e7e2a75d63f8d..97c38b72b998bdf397c72d3ea08fd93186585f30 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Panda.java +++ b/src/main/java/net/minecraft/world/entity/animal/Panda.java @@ -156,6 +156,11 @@ public class Panda extends Animal { @@ -405,7 +405,7 @@ index 6b51886e383992f35e0313bd9cc012354190a87d..5d49ed7ddf44a3d549b178ae54866419 protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index 8aae4bda1c39853c972bf17cd2ed5b940ef7ba27..7223528b4fb2885e0f6c0df2238cada16dbed35e 100644 +index 98721f3d2ed8e660f3afdbdc59fef93fb7d377af..89e473aadb1ab0bd802e7f74a77cce09578320d7 100644 --- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java @@ -130,6 +130,11 @@ public class Axolotl extends Animal implements LerpingModel, VariantHolder brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index 79f791188a14a319a19b55674c891384fcb750c9..3f00634dd8d426f4578a3d6362f7a52f57e09d3b 100644 +index c95d76c696d9ee39e284e7798bf624d339c98799..1be1bfb831198b68d8e20bf5ff922edff8832114 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -147,6 +147,11 @@ public class Zombie extends Monster { @@ -1045,7 +1045,7 @@ index 79f791188a14a319a19b55674c891384fcb750c9..3f00634dd8d426f4578a3d6362f7a52f protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -index 4bac02d30ec28ea0bce069f0f915b660b99b122d..858bf64d951ae48421ceb2f9b62de9397ffb4dc3 100644 +index faf03e2c69b6b4ee7d7425322b5b19974e37cb85..4d744e00bbaf25d1bad3782a6415e9bf5958e536 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java @@ -129,6 +129,11 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { @@ -1125,7 +1125,7 @@ index b63d87df0f48dd63c89118f91b31dc4e3622e3b8..61e8f2d030fc50840c3f80dfb6fc8107 return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 50.0D).add(Attributes.MOVEMENT_SPEED, (double)0.35F).add(Attributes.ATTACK_DAMAGE, 7.0D); } diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 04ccb0562e01ea5b9fcc4a14346fb0767ae44639..1ad37f05e37551c72f780c56ff0c01ccc4907ed4 100644 +index 6146f3e52eb1d8f47b5a41eff634d2c7cc24c26f..093b10bec1212d47f05e1270302436290cbd282e 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -195,6 +195,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -1141,7 +1141,7 @@ index 04ccb0562e01ea5b9fcc4a14346fb0767ae44639..1ad37f05e37551c72f780c56ff0c01cc public Brain getBrain() { return (Brain) super.getBrain(); // CraftBukkit - decompile error diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -index bb18a29281df797e05d828caed0a604329209cba..6986fcbe67e55c4942d13b2af39bd6293bf993a9 100644 +index d672c1e381e5c4a4b79a1dfb96f1410ec35cb1b5..08320248a6956d41d60681e3d29f81768c80fd3d 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java @@ -102,6 +102,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill @@ -1157,7 +1157,7 @@ index bb18a29281df797e05d828caed0a604329209cba..6986fcbe67e55c4942d13b2af39bd629 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e465c3143e 100644 +index 504225c5b6085ca25a816d4a6259de36ed68941c..0c7e459fa6fffedae48461ba70c98637151f81b1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1044,12 +1044,14 @@ public class PurpurWorldConfig { @@ -1936,16 +1936,16 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 + skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); } - public boolean skeletonHorseRidableInWater = true; -@@ -2300,6 +2398,7 @@ public class PurpurWorldConfig { + public boolean skeletonHorseRidable = false; +@@ -2301,6 +2399,7 @@ public class PurpurWorldConfig { public double skeletonHorseMovementSpeedMin = 0.2D; public double skeletonHorseMovementSpeedMax = 0.2D; public boolean skeletonHorseTakeDamageFromWater = false; + public boolean skeletonHorseAlwaysDropExp = false; private void skeletonHorseSettings() { + skeletonHorseRidable = getBoolean("mobs.skeleton_horse.ridable", skeletonHorseRidable); skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); - skeletonHorseCanSwim = getBoolean("mobs.skeleton_horse.can-swim", skeletonHorseCanSwim); -@@ -2316,6 +2415,7 @@ public class PurpurWorldConfig { +@@ -2318,6 +2417,7 @@ public class PurpurWorldConfig { skeletonHorseMovementSpeedMin = getDouble("mobs.skeleton_horse.attributes.movement_speed.min", skeletonHorseMovementSpeedMin); skeletonHorseMovementSpeedMax = getDouble("mobs.skeleton_horse.attributes.movement_speed.max", skeletonHorseMovementSpeedMax); skeletonHorseTakeDamageFromWater = getBoolean("mobs.skeleton_horse.takes-damage-from-water", skeletonHorseTakeDamageFromWater); @@ -1953,7 +1953,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 } public boolean slimeRidable = false; -@@ -2326,6 +2426,7 @@ public class PurpurWorldConfig { +@@ -2328,6 +2428,7 @@ public class PurpurWorldConfig { public Map slimeMaxHealthCache = new HashMap<>(); public Map slimeAttackDamageCache = new HashMap<>(); public boolean slimeTakeDamageFromWater = false; @@ -1961,7 +1961,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -2340,6 +2441,7 @@ public class PurpurWorldConfig { +@@ -2342,6 +2443,7 @@ public class PurpurWorldConfig { slimeMaxHealthCache.clear(); slimeAttackDamageCache.clear(); slimeTakeDamageFromWater = getBoolean("mobs.slime.takes-damage-from-water", slimeTakeDamageFromWater); @@ -1969,7 +1969,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 } public boolean snowGolemRidable = false; -@@ -2355,6 +2457,7 @@ public class PurpurWorldConfig { +@@ -2357,6 +2459,7 @@ public class PurpurWorldConfig { public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; public boolean snowGolemTakeDamageFromWater = true; @@ -1977,7 +1977,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -2374,6 +2477,7 @@ public class PurpurWorldConfig { +@@ -2376,6 +2479,7 @@ public class PurpurWorldConfig { snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance); snowGolemBypassMobGriefing = getBoolean("mobs.snow_golem.bypass-mob-griefing", snowGolemBypassMobGriefing); snowGolemTakeDamageFromWater = getBoolean("mobs.snow_golem.takes-damage-from-water", snowGolemTakeDamageFromWater); @@ -1985,7 +1985,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 } public boolean snifferRidable = false; -@@ -2396,6 +2500,7 @@ public class PurpurWorldConfig { +@@ -2398,6 +2502,7 @@ public class PurpurWorldConfig { public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; public boolean squidTakeDamageFromWater = false; @@ -1993,7 +1993,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -2409,6 +2514,7 @@ public class PurpurWorldConfig { +@@ -2411,6 +2516,7 @@ public class PurpurWorldConfig { squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); squidsCanFly = getBoolean("mobs.squid.can-fly", squidsCanFly); squidTakeDamageFromWater = getBoolean("mobs.squid.takes-damage-from-water", squidTakeDamageFromWater); @@ -2001,7 +2001,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 } public boolean spiderRidable = false; -@@ -2416,6 +2522,7 @@ public class PurpurWorldConfig { +@@ -2418,6 +2524,7 @@ public class PurpurWorldConfig { public boolean spiderControllable = true; public double spiderMaxHealth = 16.0D; public boolean spiderTakeDamageFromWater = false; @@ -2009,7 +2009,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -2427,6 +2534,7 @@ public class PurpurWorldConfig { +@@ -2429,6 +2536,7 @@ public class PurpurWorldConfig { } spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth); spiderTakeDamageFromWater = getBoolean("mobs.spider.takes-damage-from-water", spiderTakeDamageFromWater); @@ -2017,7 +2017,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 } public boolean strayRidable = false; -@@ -2434,6 +2542,7 @@ public class PurpurWorldConfig { +@@ -2436,6 +2544,7 @@ public class PurpurWorldConfig { public boolean strayControllable = true; public double strayMaxHealth = 20.0D; public boolean strayTakeDamageFromWater = false; @@ -2025,7 +2025,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -2445,6 +2554,7 @@ public class PurpurWorldConfig { +@@ -2447,6 +2556,7 @@ public class PurpurWorldConfig { } strayMaxHealth = getDouble("mobs.stray.attributes.max_health", strayMaxHealth); strayTakeDamageFromWater = getBoolean("mobs.stray.takes-damage-from-water", strayTakeDamageFromWater); @@ -2033,7 +2033,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 } public boolean striderRidable = false; -@@ -2454,6 +2564,7 @@ public class PurpurWorldConfig { +@@ -2456,6 +2566,7 @@ public class PurpurWorldConfig { public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; public boolean striderTakeDamageFromWater = true; @@ -2041,7 +2041,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -2467,6 +2578,7 @@ public class PurpurWorldConfig { +@@ -2469,6 +2580,7 @@ public class PurpurWorldConfig { striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); striderGiveSaddleBack = getBoolean("mobs.strider.give-saddle-back", striderGiveSaddleBack); striderTakeDamageFromWater = getBoolean("mobs.strider.takes-damage-from-water", striderTakeDamageFromWater); @@ -2049,7 +2049,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 } public boolean tadpoleRidable = false; -@@ -2489,6 +2601,7 @@ public class PurpurWorldConfig { +@@ -2491,6 +2603,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMax = 0.175D; public int traderLlamaBreedingTicks = 6000; public boolean traderLlamaTakeDamageFromWater = false; @@ -2057,7 +2057,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -2508,12 +2621,14 @@ public class PurpurWorldConfig { +@@ -2510,12 +2623,14 @@ public class PurpurWorldConfig { traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax); traderLlamaBreedingTicks = getInt("mobs.trader_llama.breeding-delay-ticks", traderLlamaBreedingTicks); traderLlamaTakeDamageFromWater = getBoolean("mobs.trader_llama.takes-damage-from-water", traderLlamaTakeDamageFromWater); @@ -2072,7 +2072,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); tropicalFishControllable = getBoolean("mobs.tropical_fish.controllable", tropicalFishControllable); -@@ -2524,6 +2639,7 @@ public class PurpurWorldConfig { +@@ -2526,6 +2641,7 @@ public class PurpurWorldConfig { } tropicalFishMaxHealth = getDouble("mobs.tropical_fish.attributes.max_health", tropicalFishMaxHealth); tropicalFishTakeDamageFromWater = getBoolean("mobs.tropical_fish.takes-damage-from-water", tropicalFishTakeDamageFromWater); @@ -2080,7 +2080,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 } public boolean turtleRidable = false; -@@ -2532,6 +2648,7 @@ public class PurpurWorldConfig { +@@ -2534,6 +2650,7 @@ public class PurpurWorldConfig { public double turtleMaxHealth = 30.0D; public int turtleBreedingTicks = 6000; public boolean turtleTakeDamageFromWater = false; @@ -2088,7 +2088,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -2544,6 +2661,7 @@ public class PurpurWorldConfig { +@@ -2546,6 +2663,7 @@ public class PurpurWorldConfig { turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); turtleBreedingTicks = getInt("mobs.turtle.breeding-delay-ticks", turtleBreedingTicks); turtleTakeDamageFromWater = getBoolean("mobs.turtle.takes-damage-from-water", turtleTakeDamageFromWater); @@ -2096,7 +2096,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 } public boolean vexRidable = false; -@@ -2552,6 +2670,7 @@ public class PurpurWorldConfig { +@@ -2554,6 +2672,7 @@ public class PurpurWorldConfig { public double vexMaxY = 320D; public double vexMaxHealth = 14.0D; public boolean vexTakeDamageFromWater = false; @@ -2104,7 +2104,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -2564,6 +2683,7 @@ public class PurpurWorldConfig { +@@ -2566,6 +2685,7 @@ public class PurpurWorldConfig { } vexMaxHealth = getDouble("mobs.vex.attributes.max_health", vexMaxHealth); vexTakeDamageFromWater = getBoolean("mobs.vex.takes-damage-from-water", vexTakeDamageFromWater); @@ -2112,7 +2112,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 } public boolean villagerRidable = false; -@@ -2579,6 +2699,7 @@ public class PurpurWorldConfig { +@@ -2581,6 +2701,7 @@ public class PurpurWorldConfig { public boolean villagerBypassMobGriefing = false; public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; @@ -2120,7 +2120,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2598,6 +2719,7 @@ public class PurpurWorldConfig { +@@ -2600,6 +2721,7 @@ public class PurpurWorldConfig { villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); @@ -2128,7 +2128,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 } public boolean vindicatorRidable = false; -@@ -2606,6 +2728,7 @@ public class PurpurWorldConfig { +@@ -2608,6 +2730,7 @@ public class PurpurWorldConfig { public double vindicatorMaxHealth = 24.0D; public double vindicatorJohnnySpawnChance = 0D; public boolean vindicatorTakeDamageFromWater = false; @@ -2136,7 +2136,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -2618,6 +2741,7 @@ public class PurpurWorldConfig { +@@ -2620,6 +2743,7 @@ public class PurpurWorldConfig { vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); vindicatorJohnnySpawnChance = getDouble("mobs.vindicator.johnny.spawn-chance", vindicatorJohnnySpawnChance); vindicatorTakeDamageFromWater = getBoolean("mobs.vindicator.takes-damage-from-water", vindicatorTakeDamageFromWater); @@ -2144,7 +2144,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 } public boolean wanderingTraderRidable = false; -@@ -2628,6 +2752,7 @@ public class PurpurWorldConfig { +@@ -2630,6 +2754,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderTakeDamageFromWater = false; public boolean wanderingTraderAllowTrading = true; @@ -2152,7 +2152,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2642,6 +2767,7 @@ public class PurpurWorldConfig { +@@ -2644,6 +2769,7 @@ public class PurpurWorldConfig { wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); wanderingTraderTakeDamageFromWater = getBoolean("mobs.wandering_trader.takes-damage-from-water", wanderingTraderTakeDamageFromWater); wanderingTraderAllowTrading = getBoolean("mobs.wandering_trader.allow-trading", wanderingTraderAllowTrading); @@ -2160,7 +2160,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 } public boolean wardenRidable = false; -@@ -2658,6 +2784,7 @@ public class PurpurWorldConfig { +@@ -2660,6 +2786,7 @@ public class PurpurWorldConfig { public boolean witchControllable = true; public double witchMaxHealth = 26.0D; public boolean witchTakeDamageFromWater = false; @@ -2168,7 +2168,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -2669,6 +2796,7 @@ public class PurpurWorldConfig { +@@ -2671,6 +2798,7 @@ public class PurpurWorldConfig { } witchMaxHealth = getDouble("mobs.witch.attributes.max_health", witchMaxHealth); witchTakeDamageFromWater = getBoolean("mobs.witch.takes-damage-from-water", witchTakeDamageFromWater); @@ -2176,7 +2176,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 } public boolean witherRidable = false; -@@ -2683,6 +2811,7 @@ public class PurpurWorldConfig { +@@ -2685,6 +2813,7 @@ public class PurpurWorldConfig { public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; public boolean witherPlaySpawnSound = true; @@ -2184,7 +2184,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2705,6 +2834,7 @@ public class PurpurWorldConfig { +@@ -2707,6 +2836,7 @@ public class PurpurWorldConfig { witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles); witherExplosionRadius = (float) getDouble("mobs.wither.explosion-radius", witherExplosionRadius); witherPlaySpawnSound = getBoolean("mobs.wither.play-spawn-sound", witherPlaySpawnSound); @@ -2192,7 +2192,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 } public boolean witherSkeletonRidable = false; -@@ -2712,6 +2842,7 @@ public class PurpurWorldConfig { +@@ -2714,6 +2844,7 @@ public class PurpurWorldConfig { public boolean witherSkeletonControllable = true; public double witherSkeletonMaxHealth = 20.0D; public boolean witherSkeletonTakeDamageFromWater = false; @@ -2200,7 +2200,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -2723,6 +2854,7 @@ public class PurpurWorldConfig { +@@ -2725,6 +2856,7 @@ public class PurpurWorldConfig { } witherSkeletonMaxHealth = getDouble("mobs.wither_skeleton.attributes.max_health", witherSkeletonMaxHealth); witherSkeletonTakeDamageFromWater = getBoolean("mobs.wither_skeleton.takes-damage-from-water", witherSkeletonTakeDamageFromWater); @@ -2208,7 +2208,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 } public boolean wolfRidable = false; -@@ -2734,6 +2866,7 @@ public class PurpurWorldConfig { +@@ -2736,6 +2868,7 @@ public class PurpurWorldConfig { public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; public boolean wolfTakeDamageFromWater = false; @@ -2216,7 +2216,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -2753,6 +2886,7 @@ public class PurpurWorldConfig { +@@ -2755,6 +2888,7 @@ public class PurpurWorldConfig { wolfNaturalRabid = getDouble("mobs.wolf.spawn-rabid-chance", wolfNaturalRabid); wolfBreedingTicks = getInt("mobs.wolf.breeding-delay-ticks", wolfBreedingTicks); wolfTakeDamageFromWater = getBoolean("mobs.wolf.takes-damage-from-water", wolfTakeDamageFromWater); @@ -2224,7 +2224,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 } public boolean zoglinRidable = false; -@@ -2760,6 +2894,7 @@ public class PurpurWorldConfig { +@@ -2762,6 +2896,7 @@ public class PurpurWorldConfig { public boolean zoglinControllable = true; public double zoglinMaxHealth = 40.0D; public boolean zoglinTakeDamageFromWater = false; @@ -2232,7 +2232,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -2771,6 +2906,7 @@ public class PurpurWorldConfig { +@@ -2773,6 +2908,7 @@ public class PurpurWorldConfig { } zoglinMaxHealth = getDouble("mobs.zoglin.attributes.max_health", zoglinMaxHealth); zoglinTakeDamageFromWater = getBoolean("mobs.zoglin.takes-damage-from-water", zoglinTakeDamageFromWater); @@ -2240,7 +2240,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 } public boolean zombieRidable = false; -@@ -2784,6 +2920,7 @@ public class PurpurWorldConfig { +@@ -2786,6 +2922,7 @@ public class PurpurWorldConfig { public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; @@ -2248,23 +2248,23 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2801,6 +2938,7 @@ public class PurpurWorldConfig { +@@ -2803,6 +2940,7 @@ public class PurpurWorldConfig { zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging); zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); zombieTakeDamageFromWater = getBoolean("mobs.zombie.takes-damage-from-water", zombieTakeDamageFromWater); + zombieAlwaysDropExp = getBoolean("mobs.zombie.always-drop-exp", zombieAlwaysDropExp); } - public boolean zombieHorseRidableInWater = false; -@@ -2813,6 +2951,7 @@ public class PurpurWorldConfig { + public boolean zombieHorseRidable = false; +@@ -2816,6 +2954,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; public boolean zombieHorseTakeDamageFromWater = false; + public boolean zombieHorseAlwaysDropExp = false; private void zombieHorseSettings() { + zombieHorseRidable = getBoolean("mobs.zombie_horse.ridable", zombieHorseRidable); zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); - zombieHorseCanSwim = getBoolean("mobs.zombie_horse.can-swim", zombieHorseCanSwim); -@@ -2830,6 +2969,7 @@ public class PurpurWorldConfig { +@@ -2834,6 +2973,7 @@ public class PurpurWorldConfig { zombieHorseMovementSpeedMax = getDouble("mobs.zombie_horse.attributes.movement_speed.max", zombieHorseMovementSpeedMax); zombieHorseSpawnChance = getDouble("mobs.zombie_horse.spawn-chance", zombieHorseSpawnChance); zombieHorseTakeDamageFromWater = getBoolean("mobs.zombie_horse.takes-damage-from-water", zombieHorseTakeDamageFromWater); @@ -2272,7 +2272,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 } public boolean zombieVillagerRidable = false; -@@ -2844,6 +2984,7 @@ public class PurpurWorldConfig { +@@ -2848,6 +2988,7 @@ public class PurpurWorldConfig { public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; public boolean zombieVillagerCureEnabled = true; @@ -2280,7 +2280,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2862,6 +3003,7 @@ public class PurpurWorldConfig { +@@ -2866,6 +3007,7 @@ public class PurpurWorldConfig { zombieVillagerCuringTimeMin = getInt("mobs.zombie_villager.curing_time.min", zombieVillagerCuringTimeMin); zombieVillagerCuringTimeMax = getInt("mobs.zombie_villager.curing_time.max", zombieVillagerCuringTimeMax); zombieVillagerCureEnabled = getBoolean("mobs.zombie_villager.cure.enabled", zombieVillagerCureEnabled); @@ -2288,7 +2288,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 } public boolean zombifiedPiglinRidable = false; -@@ -2874,6 +3016,7 @@ public class PurpurWorldConfig { +@@ -2878,6 +3020,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; public boolean zombifiedPiglinTakeDamageFromWater = false; @@ -2296,7 +2296,7 @@ index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e4 private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2890,6 +3033,7 @@ public class PurpurWorldConfig { +@@ -2894,6 +3037,7 @@ public class PurpurWorldConfig { zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens); zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); zombifiedPiglinTakeDamageFromWater = getBoolean("mobs.zombified_piglin.takes-damage-from-water", zombifiedPiglinTakeDamageFromWater); diff --git a/patches/server/0232-Mob-head-visibility-percent.patch b/patches/server/0232-Mob-head-visibility-percent.patch index 29b22fe15..7073f012e 100644 --- a/patches/server/0232-Mob-head-visibility-percent.patch +++ b/patches/server/0232-Mob-head-visibility-percent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Mob head visibility percent diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index cf997f8811aacd32946d81de87b1683910374e42..7a5b7e2d50c98774d8bc50a9c83d15a67996fc90 100644 +index 619a475f7a7869ddde87c47950c0dfbe7048d9d6..73fed7fb7cc9e38ebf111a365d25ee91657668e1 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1040,9 +1040,20 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -32,7 +32,7 @@ index cf997f8811aacd32946d81de87b1683910374e42..7a5b7e2d50c98774d8bc50a9c83d15a6 // Purpur start if (entity instanceof LivingEntity entityliving) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c300838d83652a36389694e7afbec5feff11cd8a..a5f86aa5c3cd08dddb147c338a124953cacbf178 100644 +index 8c16e4395c1a2e0f4bdc2a015751ffdacc431804..b687536721b92329869b7ddd2cb9223e2fb28133 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1305,6 +1305,7 @@ public class PurpurWorldConfig { @@ -82,8 +82,8 @@ index c300838d83652a36389694e7afbec5feff11cd8a..a5f86aa5c3cd08dddb147c338a124953 + skeletonHeadVisibilityPercent = getDouble("mobs.skeleton.head-visibility-percent", skeletonHeadVisibilityPercent); } - public boolean skeletonHorseRidableInWater = true; -@@ -2929,6 +2935,7 @@ public class PurpurWorldConfig { + public boolean skeletonHorseRidable = false; +@@ -2931,6 +2937,7 @@ public class PurpurWorldConfig { public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; public boolean zombieAlwaysDropExp = false; @@ -91,11 +91,11 @@ index c300838d83652a36389694e7afbec5feff11cd8a..a5f86aa5c3cd08dddb147c338a124953 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2947,6 +2954,7 @@ public class PurpurWorldConfig { +@@ -2949,6 +2956,7 @@ public class PurpurWorldConfig { zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); zombieTakeDamageFromWater = getBoolean("mobs.zombie.takes-damage-from-water", zombieTakeDamageFromWater); zombieAlwaysDropExp = getBoolean("mobs.zombie.always-drop-exp", zombieAlwaysDropExp); + zombieHeadVisibilityPercent = getDouble("mobs.zombie.head-visibility-percent", zombieHeadVisibilityPercent); } - public boolean zombieHorseRidableInWater = false; + public boolean zombieHorseRidable = false; diff --git a/patches/server/0243-Configurable-minimum-demand-for-trades.patch b/patches/server/0243-Configurable-minimum-demand-for-trades.patch index 5b7a62303..993d75613 100644 --- a/patches/server/0243-Configurable-minimum-demand-for-trades.patch +++ b/patches/server/0243-Configurable-minimum-demand-for-trades.patch @@ -9,7 +9,7 @@ This patch adds a config option to allow the minimum demand to instead be configurable. diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 1ad37f05e37551c72f780c56ff0c01ccc4907ed4..54c96e3e2a0b7efe082a0cb48492c0605d0db51b 100644 +index 093b10bec1212d47f05e1270302436290cbd282e..b2aa0ff2f07590e8832098d6dea027f1d3d20026 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -546,7 +546,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -40,10 +40,10 @@ index 4f7457578ab3118d10e0d5dfc23d79c9b20c2f44..e03ce53b93d1b9366f2a7f14f341750a public ItemStack assemble() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 807ca55a5734fccb10b1aae2d99e0b37aeffc614..321c625b1374e1a5676459d33f071d62ad45437b 100644 +index 65a2db407937c887f00bdc7cc8a84b5eba8e0df5..8517c0b219ccd3cbeb457d8d244534efec89c9a1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2731,6 +2731,7 @@ public class PurpurWorldConfig { +@@ -2733,6 +2733,7 @@ public class PurpurWorldConfig { public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; @@ -51,7 +51,7 @@ index 807ca55a5734fccb10b1aae2d99e0b37aeffc614..321c625b1374e1a5676459d33f071d62 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2751,6 +2752,7 @@ public class PurpurWorldConfig { +@@ -2753,6 +2754,7 @@ public class PurpurWorldConfig { villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); villagerAlwaysDropExp = getBoolean("mobs.villager.always-drop-exp", villagerAlwaysDropExp); diff --git a/patches/server/0244-Lobotomize-stuck-villagers.patch b/patches/server/0244-Lobotomize-stuck-villagers.patch index 45e66ed8e..477fe7a60 100644 --- a/patches/server/0244-Lobotomize-stuck-villagers.patch +++ b/patches/server/0244-Lobotomize-stuck-villagers.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Lobotomize stuck villagers diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 54c96e3e2a0b7efe082a0cb48492c0605d0db51b..6760c9cc9ee244b7adca379d7e34696c48b65dbf 100644 +index b2aa0ff2f07590e8832098d6dea027f1d3d20026..3ec73049c8b681d2ff7f63623037e287adffc11b 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -141,6 +141,8 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -93,7 +93,7 @@ index 54c96e3e2a0b7efe082a0cb48492c0605d0db51b..6760c9cc9ee244b7adca379d7e34696c if (this.assignProfessionWhenSpawned) { this.assignProfessionWhenSpawned = false; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java -index a67b5d20b956e0bf801c9eeb9330567c21927010..15c7dd5ae4ea040b91b665e5ce05c0d35ab1604e 100644 +index 6c15d40979fd3e3d246a447c432b321fbf29ada3..6ace76a829c88e2e747dbbcce0a6582c615fc56d 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java @@ -252,4 +252,11 @@ public class CraftVillager extends CraftAbstractVillager implements Villager { @@ -109,10 +109,10 @@ index a67b5d20b956e0bf801c9eeb9330567c21927010..15c7dd5ae4ea040b91b665e5ce05c0d3 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 321c625b1374e1a5676459d33f071d62ad45437b..3fa481c71331a19b58511392a840f47915639ce2 100644 +index 8517c0b219ccd3cbeb457d8d244534efec89c9a1..b123c0505ab3924258aa7ed32262c0b6e99d0ec0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2732,6 +2732,8 @@ public class PurpurWorldConfig { +@@ -2734,6 +2734,8 @@ public class PurpurWorldConfig { public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; public int villagerMinimumDemand = 0; @@ -121,7 +121,7 @@ index 321c625b1374e1a5676459d33f071d62ad45437b..3fa481c71331a19b58511392a840f479 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2753,6 +2755,17 @@ public class PurpurWorldConfig { +@@ -2755,6 +2757,17 @@ public class PurpurWorldConfig { villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); villagerAlwaysDropExp = getBoolean("mobs.villager.always-drop-exp", villagerAlwaysDropExp); villagerMinimumDemand = getInt("mobs.villager.minimum-demand", villagerMinimumDemand); diff --git a/patches/server/0245-Option-for-villager-display-trade-item.patch b/patches/server/0245-Option-for-villager-display-trade-item.patch index 98e7dfb00..c0108782f 100644 --- a/patches/server/0245-Option-for-villager-display-trade-item.patch +++ b/patches/server/0245-Option-for-villager-display-trade-item.patch @@ -17,10 +17,10 @@ index c3e0b1f11b58668f9f24eb421abc340e1b49dfac..d809fa4f96e2c528075f544355397903 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3fa481c71331a19b58511392a840f47915639ce2..38d13eb230cfb33a450b8a9a1a3c6aa2efe5b053 100644 +index b123c0505ab3924258aa7ed32262c0b6e99d0ec0..0786e51fa84f0b4e8661c1ea9c76b0a7c00648dc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2734,6 +2734,7 @@ public class PurpurWorldConfig { +@@ -2736,6 +2736,7 @@ public class PurpurWorldConfig { public int villagerMinimumDemand = 0; public boolean villagerLobotomizeEnabled = false; public int villagerLobotomizeCheckInterval = 100; @@ -28,7 +28,7 @@ index 3fa481c71331a19b58511392a840f47915639ce2..38d13eb230cfb33a450b8a9a1a3c6aa2 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2766,6 +2767,7 @@ public class PurpurWorldConfig { +@@ -2768,6 +2769,7 @@ public class PurpurWorldConfig { } villagerLobotomizeEnabled = getBoolean("mobs.villager.lobotomize.enabled", villagerLobotomizeEnabled); villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval); diff --git a/patches/server/0252-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0252-Implement-configurable-search-radius-for-villagers-t.patch index 8838fe09e..0aa265a28 100644 --- a/patches/server/0252-Implement-configurable-search-radius-for-villagers-t.patch +++ b/patches/server/0252-Implement-configurable-search-radius-for-villagers-t.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Implement configurable search radius for villagers to spawn diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 6760c9cc9ee244b7adca379d7e34696c48b65dbf..9682676aa68cf5927facd60ef061006579c1f893 100644 +index 3ec73049c8b681d2ff7f63623037e287adffc11b..c889e5e0ba42eac860d25c76e5956471eb29be7e 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -1101,6 +1101,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -18,10 +18,10 @@ index 6760c9cc9ee244b7adca379d7e34696c48b65dbf..9682676aa68cf5927facd60ef0610065 AABB axisalignedbb = this.getBoundingBox().inflate(10.0D, 10.0D, 10.0D); List list = world.getEntitiesOfClass(Villager.class, axisalignedbb); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ce4f8f9661c6c0d09fa517861aae80559859f09f..b964bad8d599e093ad312a9dedf1a33856ce9ec1 100644 +index ecda4d9dcfb38189bb579b93f67047d5d0d00ae1..40bda43c2acbf41eb55cd358307dfd4c3e2c281a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2745,6 +2745,8 @@ public class PurpurWorldConfig { +@@ -2747,6 +2747,8 @@ public class PurpurWorldConfig { public boolean villagerLobotomizeEnabled = false; public int villagerLobotomizeCheckInterval = 100; public boolean villagerDisplayTradeItem = true; @@ -30,7 +30,7 @@ index ce4f8f9661c6c0d09fa517861aae80559859f09f..b964bad8d599e093ad312a9dedf1a338 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2778,6 +2780,8 @@ public class PurpurWorldConfig { +@@ -2780,6 +2782,8 @@ public class PurpurWorldConfig { villagerLobotomizeEnabled = getBoolean("mobs.villager.lobotomize.enabled", villagerLobotomizeEnabled); villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval); villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem); diff --git a/patches/server/0256-Skeletons-eat-wither-roses.patch b/patches/server/0256-Skeletons-eat-wither-roses.patch index cf22f9748..e53b7b39a 100644 --- a/patches/server/0256-Skeletons-eat-wither-roses.patch +++ b/patches/server/0256-Skeletons-eat-wither-roses.patch @@ -94,7 +94,7 @@ index 9b43150a00d7fac85aa69f5a2dbffd0dfdae4b86..f4a47ac2c86cc95178922cce7320ba1e + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ea082eed28b9d63514291a094ebd99b8670e7910..40f127476d96b39ac107cb1d18dd08798612c952 100644 +index 4076b32e2e35165634b6d328ffa3ab692f8c854f..9ee1258955e99fa0adacfdc56b8621a2dfee064b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2429,6 +2429,7 @@ public class PurpurWorldConfig { @@ -112,4 +112,4 @@ index ea082eed28b9d63514291a094ebd99b8670e7910..40f127476d96b39ac107cb1d18dd0879 + skeletonFeedWitherRoses = getInt("mobs.skeleton.feed-wither-roses", skeletonFeedWitherRoses); } - public boolean skeletonHorseRidableInWater = true; + public boolean skeletonHorseRidable = false; diff --git a/patches/server/0272-Add-skeleton-bow-accuracy-option.patch b/patches/server/0272-Add-skeleton-bow-accuracy-option.patch index 887b8ab1a..8358207f3 100644 --- a/patches/server/0272-Add-skeleton-bow-accuracy-option.patch +++ b/patches/server/0272-Add-skeleton-bow-accuracy-option.patch @@ -18,7 +18,7 @@ index f3e1fa62d9f067c0fe8aacb88bf30b01ee0562c1..28eb98d383d6846a25c29f8cd8ff211c org.bukkit.event.entity.EntityShootBowEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityShootBowEvent(this, this.getMainHandItem(), entityarrow.getPickupItem(), entityarrow, net.minecraft.world.InteractionHand.MAIN_HAND, 0.8F, true); // Paper if (event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 71d2da21e1dcf5991f9161b3fcad66247a5a4991..86340e782bbc125ec672eea855de29f90ac127de 100644 +index 9df11e164f6aaa13c2ad50717cfc42b8c4c8c6e7..712e9b87442e0eeb05993e6589123d756d875518 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2449,6 +2449,8 @@ public class PurpurWorldConfig { @@ -48,4 +48,4 @@ index 71d2da21e1dcf5991f9161b3fcad66247a5a4991..86340e782bbc125ec672eea855de29f9 + } } - public boolean skeletonHorseRidableInWater = true; + public boolean skeletonHorseRidable = false; diff --git a/patches/server/0300-Shears-can-defuse-TNT.patch b/patches/server/0300-Shears-can-defuse-TNT.patch index 2fd4164b0..154157dd0 100644 --- a/patches/server/0300-Shears-can-defuse-TNT.patch +++ b/patches/server/0300-Shears-can-defuse-TNT.patch @@ -42,10 +42,10 @@ index 4ce3e69970dd9eb251d0538a2d233ca30e9e5e47..afc65b8bb7e7f7f70a25f2d869412ed3 + // Purpur end - Shears can defuse TNT } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e7a794ce230c481e39436506facdb77726f96199..ec7c1b39a87f253c52de4d0f3b01e8329aaa723a 100644 +index 5019942bbbabef9a73f34d3b3c84c7c6f2a014b1..469aa0c5d2080394f0a9cbbb3891f0de36da72a3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -3219,4 +3219,11 @@ public class PurpurWorldConfig { +@@ -3223,4 +3223,11 @@ public class PurpurWorldConfig { cauldronDripstoneWaterFillChance = (float) getDouble("blocks.cauldron.fill-chances.dripstone-water", cauldronDripstoneWaterFillChance); cauldronDripstoneLavaFillChance = (float) getDouble("blocks.cauldron.fill-chances.dripstone-lava", cauldronDripstoneLavaFillChance); }