adds ridable option to zombie horse and skeleton horse, fixes #1458

only set as tamable if already tamed or if ridable option is enabled
This commit is contained in:
granny
2023-11-13 23:41:37 -08:00
parent 1adf78b91a
commit 2a38801aeb
41 changed files with 309 additions and 301 deletions

View File

@@ -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<Fox.Type> {
@@ -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<Axolo
@@ -469,7 +469,7 @@ index f8dbea402f723bf38d7ab3f2468d1b02b7124560..3b1faa63e46a48e83ea672cf6da444a1
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 fb6bca763fcbb249c86c1e360274d4458df19bfc..9288327a365bc67c5bb8ed6aa23b78c725d5ba40 100644
index 8d57bf9bbd1f61e6f1509c8b5cf01756ef145571..b414572411e5b2b78fd66e860273656d53df9d9d 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
@@ -150,6 +150,11 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V
@@ -501,7 +501,7 @@ index 53546e904948d03882e5f5b0a8d4256c72698afb..42dcdbec69b052679e590a1ff932c619
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 32ef5b8dc8bf1dd37f49b9d67fdde9feda37e6b5..98e28ed72f18c88ff00dec9156b1ffda89da1269 100644
index 1a988e2abb7c5f7dafa325f2a9d92a99be06681f..6e3af90f4cb4f7722bd1601a515fd9a377459d1b 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
@@ -63,6 +63,11 @@ public class SkeletonHorse extends AbstractHorse {
@@ -533,7 +533,7 @@ index 17648925f97110f2439890388f4bfbbff0917c61..02e3adc9a55fa9cd2a418094eb206970
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 4a7c1ba529261e57acd01f83796ee8faa17d3a2f..9e13a0c5ba2e31182c76df06380055a04c18a6a6 100644
index 9dcc47b0680227d1ada06366ca2a334535d18425..9e4a1c3ea8ce9ef438f958498cce4b04ec70dba9 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
@@ -59,6 +59,11 @@ public class ZombieHorse extends AbstractHorse {
@@ -645,7 +645,7 @@ index cd1f830bf28b1c68e2b9cc7daa77f696234a22c9..df8d1b34078031001c50325b8cf5bfa9
return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.30000001192092896D).add(Attributes.ATTACK_DAMAGE, 8.0D).add(Attributes.MAX_HEALTH, 80.0D);
}
diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
index 463a01305cc76ffd8018d2227f5f6dc1ecf24c5f..0be47e96b2bb6bb66e7905e255e5f6009d6e0a97 100644
index 02998e2f3d912d47641e7c9199467b5301de1e4c..4c9ffa8e1ab97d8156ead0ed189c769ffd9b4aae 100644
--- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
+++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
@@ -120,6 +120,11 @@ public class EnderMan extends Monster implements NeutralMob {
@@ -1029,7 +1029,7 @@ index 8cd6012b00dd5b307fd76ef0fd9c2cd92342a92a..15fd1af0773ba1254a429240444f48e6
protected Brain.Provider<Zoglin> 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<Villager> getBrain() {
return (Brain<Villager>) 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<Integer, Double> slimeMaxHealthCache = new HashMap<>();
public Map<Integer, Double> 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);