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

@@ -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<Fox.Type> {
@@ -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<Axolo
@@ -475,7 +475,7 @@ index 0251ded48eb5bdf96f0e67f6456aa15909c8a4ff..f8dbea402f723bf38d7ab3f2468d1b02
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 1c0d0f14659e0a64e6b3b3998f59f90cd5b59726..d0717a81ae7b3c55fb47917508b456408484658b 100644
index 6045f29c641d1958371c77701e9514d9ca44b85e..58175824dc315134b03b9dabfcae04e192af0b86 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
@@ -145,6 +145,11 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V
@@ -507,7 +507,7 @@ index 1de48560ac5a1db8845c98c812b2e9f9eb972123..53546e904948d03882e5f5b0a8d4256c
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 bd83a2b82908d0beb91bd2937e263d6681a691f6..32ef5b8dc8bf1dd37f49b9d67fdde9feda37e6b5 100644
index e618d3b77cafeaee22b4140449703ca80bdd4c92..1a988e2abb7c5f7dafa325f2a9d92a99be06681f 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
@@ -58,6 +58,11 @@ public class SkeletonHorse extends AbstractHorse {
@@ -539,7 +539,7 @@ index 3632fcb124be8cf77d9bebf7b861a48196252ed0..17648925f97110f2439890388f4bfbbf
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 fba4eec4490e389b8b102d40542b9340d8ac559e..4a7c1ba529261e57acd01f83796ee8faa17d3a2f 100644
index 93c44b8cc86ca4fe0c70855d4eb71411c5a42846..9dcc47b0680227d1ada06366ca2a334535d18425 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
@@ -54,6 +54,11 @@ public class ZombieHorse extends AbstractHorse {
@@ -555,7 +555,7 @@ index fba4eec4490e389b8b102d40542b9340d8ac559e..4a7c1ba529261e57acd01f83796ee8fa
return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0D).add(Attributes.MOVEMENT_SPEED, (double)0.2F);
}
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 0d16d486c7efc9a8c4c0db648175cacee5aa3a04..1588c4ec1ff1d9f1eca8b6c7971a2cdd1f98efb3 100644
index 39d7fe20ef5b3ca34a72a50bb8d9c35aa3b2ed23..20aa7cdf10284c14a2d623aefb061b6197d66d27 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
@@ -190,6 +190,11 @@ public class EnderDragon extends Mob implements Enemy {
@@ -673,7 +673,7 @@ index 971210c1199ec48f28446e75d8d796a1f3f9a734..cd1f830bf28b1c68e2b9cc7daa77f696
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 580e7c149e24f0bcbb8c21284869f78e485d091d..4fe5b9babd51a2123a76384c2fd9ec0147cac785 100644
index 51524661a62cbfe5ff7a3b7d640260e911902b23..013fd016d384f1bf94b875bc71139e0ea4e12d21 100644
--- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
+++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
@@ -95,7 +95,7 @@ public class EnderMan extends Monster implements NeutralMob {
@@ -1069,7 +1069,7 @@ index 1d862dd019b2d024f61cfc8956430d18d94b1ebf..8cd6012b00dd5b307fd76ef0fd9c2cd9
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 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<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 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<Integer, Double> slimeMaxHealthCache = new HashMap<>();
public Map<Integer, Double> 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);