From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: YouHaveTrouble Date: Fri, 5 Feb 2021 01:11:22 +0100 Subject: [PATCH] Toggle for water sensitive mob damage diff --git a/src/main/java/net/minecraft/world/entity/GlowSquid.java b/src/main/java/net/minecraft/world/entity/GlowSquid.java index 8d2a915280f7a010483720295077f66684f49615..17ff16de143ccd40bf7654062eefb6a36b65a851 100644 --- a/src/main/java/net/minecraft/world/entity/GlowSquid.java +++ b/src/main/java/net/minecraft/world/entity/GlowSquid.java @@ -33,6 +33,11 @@ public class GlowSquid extends Squid { return this.level.purpurConfig.glowSquidsCanFly; } + @Override + public boolean isSensitiveToWater() { + return this.level.purpurConfig.glowSquidTakeDamageFromWater; + } + @Override protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java index eb6ced824d024a6402772e4df56e867e18fae988..b29d4dc2f531cb9e8ba11e49c636df41b27c6bd2 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java @@ -234,6 +234,11 @@ public class Bat extends AmbientCreature { this.getAttribute(Attributes.ATTACK_KNOCKBACK).setBaseValue(this.level.purpurConfig.batAttackKnockback); } + @Override + public boolean isSensitiveToWater() { + return this.level.purpurConfig.batTakeDamageFromWater; + } + @Override public void readAdditionalSaveData(CompoundTag nbt) { super.readAdditionalSaveData(nbt); diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java index d50f80e1b6ba690c25fb2993f596f2329bd422a3..9ffb7b5c410f1b2b5bb409788315c20fc171d820 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java @@ -160,7 +160,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { // Paper end this.lookControl = new Bee.BeeLookControl(this); this.setPathfindingMalus(BlockPathTypes.DANGER_FIRE, -1.0F); - this.setPathfindingMalus(BlockPathTypes.WATER, -1.0F); + if (isSensitiveToWater()) this.setPathfindingMalus(BlockPathTypes.WATER, -1.0F); // Purpur this.setPathfindingMalus(BlockPathTypes.WATER_BORDER, 16.0F); this.setPathfindingMalus(BlockPathTypes.COCOA, -1.0F); this.setPathfindingMalus(BlockPathTypes.FENCE, -1.0F); @@ -425,6 +425,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { return this.level.purpurConfig.beeBreedingTicks; } + @Override + public boolean isSensitiveToWater() { + return this.level.purpurConfig.beeTakeDamageFromWater; + } + @Override public int getRemainingPersistentAngerTime() { return (Integer) this.entityData.get(Bee.DATA_REMAINING_ANGER_TIME); diff --git a/src/main/java/net/minecraft/world/entity/animal/Cat.java b/src/main/java/net/minecraft/world/entity/animal/Cat.java index 0d8320fde901cd9ae6aa420b76362be77ca62c93..0ebfb9e6e6845cf0248410698fe59a4c7a76c43c 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cat.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java @@ -107,6 +107,11 @@ public class Cat extends TamableAnimal implements VariantHolder { return this.level.purpurConfig.catBreedingTicks; } + @Override + public boolean isSensitiveToWater() { + return this.level.purpurConfig.catTakeDamageFromWater; + } + public ResourceLocation getResourceLocation() { return this.getVariant().texture(); } diff --git a/src/main/java/net/minecraft/world/entity/animal/Chicken.java b/src/main/java/net/minecraft/world/entity/animal/Chicken.java index 6ade6225e83bab038aab91637a425616cab2853e..9d531f623ceb0c7ac732588b906d5fe3492ce96a 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Chicken.java +++ b/src/main/java/net/minecraft/world/entity/animal/Chicken.java @@ -67,6 +67,11 @@ public class Chicken extends Animal { return this.level.purpurConfig.chickenBreedingTicks; } + @Override + public boolean isSensitiveToWater() { + return this.level.purpurConfig.chickenTakeDamageFromWater; + } + @Override protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/Cod.java b/src/main/java/net/minecraft/world/entity/animal/Cod.java index 3e213264f5991ccfcb5c207621334b8e9d6cc9bc..d7e725d0ffc7092b0c59598cbda1d253b6dfc003 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cod.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cod.java @@ -18,6 +18,11 @@ public class Cod extends AbstractSchoolingFish { this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.codMaxHealth); } + @Override + public boolean isSensitiveToWater() { + return this.level.purpurConfig.codTakeDamageFromWater; + } + @Override public ItemStack getBucketItemStack() { return new ItemStack(Items.COD_BUCKET); diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java index 154829bdef01a0a93f163578ea8e51a0cb3952e5..385bf94f85471c9461c83df2fff48c1e1115e5f7 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java @@ -53,6 +53,11 @@ public class Cow extends Animal { return this.level.purpurConfig.cowBreedingTicks; } + @Override + public boolean isSensitiveToWater() { + return this.level.purpurConfig.cowTakeDamageFromWater; + } + @Override 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 1c8e81fd2561535a04d55238ad086a6cc6851d5d..c02a84fc12780b8f02722539b31ace840ae4bc1d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java @@ -91,6 +91,11 @@ public class Dolphin extends WaterAnimal { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.dolphinMaxHealth); } + @Override + public boolean isSensitiveToWater() { + return this.level.purpurConfig.dolphinTakeDamageFromWater; + } + @Nullable @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 5974577a408c13d05f326c7bfc704441644e7c8b..169cd4a00de163dc86cf73382275ba97a5d09e7f 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java @@ -153,6 +153,11 @@ public class Fox extends Animal implements VariantHolder { return this.level.purpurConfig.foxBreedingTicks; } + @Override + public boolean isSensitiveToWater() { + return this.level.purpurConfig.foxTakeDamageFromWater; + } + @Override protected void defineSynchedData() { super.defineSynchedData(); diff --git a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java index 4bdef5dd01b69ff64f632a71096c1a87b2fc1195..ec5cd6de7a77dc1959a5d15d51d4dfffc4e3c29d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java @@ -71,6 +71,11 @@ public class IronGolem extends AbstractGolem implements NeutralMob { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.ironGolemMaxHealth); } + @Override + public boolean isSensitiveToWater() { + return this.level.purpurConfig.ironGolemTakeDamageFromWater; + } + @Override protected void registerGoals() { this.goalSelector.addGoal(1, new MeleeAttackGoal(this, 1.0D, true)); diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java index 6d7fd5bab1173e99eb8f2b67d202b22abaad28bb..6a0afe12430dbd1ff76f17801eb0bf44c2f90ff0 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java @@ -73,6 +73,11 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder { return this.level.purpurConfig.rabbitBreedingTicks; } + @Override + public boolean isSensitiveToWater() { + return this.level.purpurConfig.rabbitTakeDamageFromWater; + } + // CraftBukkit start - code from constructor public void initializePathFinderGoals(){ this.setSpeedModifier(0.0D); diff --git a/src/main/java/net/minecraft/world/entity/animal/Salmon.java b/src/main/java/net/minecraft/world/entity/animal/Salmon.java index 40196aa0f8abc8be68dffd397f706a0c2c0fc320..1f81836419b5da90aa12a00c3397fab74058dd19 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Salmon.java +++ b/src/main/java/net/minecraft/world/entity/animal/Salmon.java @@ -18,6 +18,11 @@ public class Salmon extends AbstractSchoolingFish { this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.salmonMaxHealth); } + @Override + public boolean isSensitiveToWater() { + return this.level.purpurConfig.salmonTakeDamageFromWater; + } + @Override public int getMaxSchoolSize() { return 5; diff --git a/src/main/java/net/minecraft/world/entity/animal/Sheep.java b/src/main/java/net/minecraft/world/entity/animal/Sheep.java index 34ddf57d47dc82b87ad9898c91b7891b8255455f..145e17504690299ca6e64a06a52dbb8684ac6966 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Sheep.java +++ b/src/main/java/net/minecraft/world/entity/animal/Sheep.java @@ -127,6 +127,11 @@ public class Sheep extends Animal implements Shearable { return this.level.purpurConfig.sheepBreedingTicks; } + @Override + public boolean isSensitiveToWater() { + return this.level.purpurConfig.sheepTakeDamageFromWater; + } + @Override protected void registerGoals() { this.eatBlockGoal = new EatBlockGoal(this); diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java index 6b8169ac1fbe3920083ffd8cb5e15b9d8e67f436..e932db904ba8c22a4ab939a2e92e20e3200512c0 100644 --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java @@ -97,7 +97,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @Override public boolean isSensitiveToWater() { - return true; + return this.level.purpurConfig.snowGolemTakeDamageFromWater; // Purpur } @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java index 77ef1ae92dee5bf13590312466c778a249129d69..35d61f8c990154aa297c70338f410a4468e01d68 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java @@ -70,6 +70,11 @@ public class Squid extends WaterAnimal { return this.wasTouchingWater || canFly(); } + @Override + public boolean isSensitiveToWater() { + return this.level.purpurConfig.squidTakeDamageFromWater; + } + @Override protected void registerGoals() { this.goalSelector.addGoal(0, new Squid.SquidRandomMovementGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java index c0605ccfd050417189595cdcb68eb9d56e9fc4ee..e2252ea4e7303fcbbe2e55faa9604c1c668ea908 100644 --- a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java +++ b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java @@ -47,6 +47,11 @@ public class TropicalFish extends AbstractSchoolingFish implements VariantHolder this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.tropicalFishMaxHealth); } + @Override + public boolean isSensitiveToWater() { + return this.level.purpurConfig.tropicalFishTakeDamageFromWater; + } + public static String getPredefinedName(int variant) { return "entity.minecraft.tropical_fish.predefined." + variant; } diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java index 2f685d2512d8bd3cb41dd1b652ca2c2fb805b83b..866b205b996c4f64deef501a2afb7ddfd0987e12 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java @@ -93,6 +93,11 @@ public class Turtle extends Animal { return this.level.purpurConfig.turtleBreedingTicks; } + @Override + public boolean isSensitiveToWater() { + return this.level.purpurConfig.turtleTakeDamageFromWater; + } + public void setHomePos(BlockPos pos) { this.entityData.set(Turtle.HOME_POS, pos.immutable()); // Paper - called with mutablepos... } diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java index 3c5186800381c414c8dd3f2c58b1cd947e64a092..f18d90f4b2b786acbea242c4adbbdca2293929ec 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java @@ -187,6 +187,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { super.tame(player); } + @Override + public boolean isSensitiveToWater() { + return this.level.purpurConfig.wolfTakeDamageFromWater; + } + @Override 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 4ce8b7cfdbbb475e257fe91ea541669361b92173..574c011caa6ab029edfb0ee6c7436b451f407bc6 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 @@ -108,6 +108,11 @@ public class Axolotl extends Animal implements LerpingModel, VariantHolder getModelRotationValues() { return this.modelRotationValues; diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java index 2c1a6321f46a029ddc1c4e4c0afe07516c874843..25cbeb86b23f7e629fbca37a3bd4b74521803803 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java @@ -94,6 +94,11 @@ public class Goat extends Animal { return this.level.purpurConfig.goatBreedingTicks; } + @Override + public boolean isSensitiveToWater() { + return this.level.purpurConfig.goatTakeDamageFromWater; + } + @Override protected Brain.Provider brainProvider() { return Brain.provider(Goat.MEMORY_TYPES, Goat.SENSOR_TYPES); diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java index 11dc7cf7cd38994edb6e8c1ed0761e45bc998bfc..935f1e8af2ac139fb8956b53edc55ae793d9a42d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java @@ -35,6 +35,11 @@ public class Donkey extends AbstractChestedHorse { return this.level.purpurConfig.donkeyBreedingTicks; } + @Override + public boolean isSensitiveToWater() { + return this.level.purpurConfig.donkeyTakeDamageFromWater; + } + @Override protected SoundEvent getAmbientSound() { return SoundEvents.DONKEY_AMBIENT; diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java b/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java index 97cbd228dd33333468e545697530bbd14de86308..8dd0cc7bff5ec3ce9603f6e511dd5042e1cf9657 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java @@ -60,6 +60,11 @@ public class Horse extends AbstractHorse implements VariantHolder { return this.level.purpurConfig.horseBreedingTicks; } + @Override + public boolean isSensitiveToWater() { + return this.level.purpurConfig.horseTakeDamageFromWater; + } + @Override 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 5d960b40ff2c41e7e21cace33a2655eb8bea7dc9..84f6fab337f126290225e93038555699a7814f94 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 @@ -99,6 +99,11 @@ public class Llama extends AbstractChestedHorse implements VariantHolder type, Level world) { super(type, world); - this.setPathfindingMalus(BlockPathTypes.WATER, -1.0F); + if (isSensitiveToWater()) this.setPathfindingMalus(BlockPathTypes.WATER, -1.0F); // Purpur this.setPathfindingMalus(BlockPathTypes.LAVA, 8.0F); this.setPathfindingMalus(BlockPathTypes.DANGER_FIRE, 0.0F); this.setPathfindingMalus(BlockPathTypes.DAMAGE_FIRE, 0.0F); @@ -106,7 +106,7 @@ public class Blaze extends Monster { @Override public boolean isSensitiveToWater() { - return true; + return this.level.purpurConfig.blazeTakeDamageFromWater; // Purpur } @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/CaveSpider.java b/src/main/java/net/minecraft/world/entity/monster/CaveSpider.java index 4367d14654aa3e85b821d72ca8243d3976fda072..782b2c8bfc0ae71337ba8462d964a3e963acbf28 100644 --- a/src/main/java/net/minecraft/world/entity/monster/CaveSpider.java +++ b/src/main/java/net/minecraft/world/entity/monster/CaveSpider.java @@ -33,6 +33,11 @@ public class CaveSpider extends Spider { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.caveSpiderMaxHealth); } + @Override + public boolean isSensitiveToWater() { + return this.level.purpurConfig.caveSpiderTakeDamageFromWater; + } + @Override public boolean doHurtTarget(Entity target) { if (super.doHurtTarget(target)) { diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java index 7e3b64dbd6df0b4d3556f7666c632a630a3a381e..4c175c9e8a3452f67b3f7cdac5aac1169309e993 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java @@ -186,6 +186,11 @@ public class Creeper extends Monster implements PowerableMob { return super.finalizeSpawn(world, difficulty, spawnReason, entityData, entityNbt); } + @Override + public boolean isSensitiveToWater() { + return this.level.purpurConfig.creeperTakeDamageFromWater; + } + @Override protected SoundEvent getHurtSound(DamageSource source) { return SoundEvents.CREEPER_HURT; diff --git a/src/main/java/net/minecraft/world/entity/monster/Drowned.java b/src/main/java/net/minecraft/world/entity/monster/Drowned.java index 366f4d7e5e640d1b906dc532ea1e2d323c293a51..050b337bfd328c0272a93615c98b8eec02deb026 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java +++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java @@ -93,6 +93,11 @@ public class Drowned extends Zombie implements RangedAttackMob { return level.purpurConfig.drownedJockeyTryExistingChickens; } + @Override + public boolean isSensitiveToWater() { + return this.level.purpurConfig.drownedTakeDamageFromWater; + } + @Override protected void addBehaviourGoals() { this.goalSelector.addGoal(1, new Drowned.DrownedGoToWaterGoal(this, 1.0D)); diff --git a/src/main/java/net/minecraft/world/entity/monster/ElderGuardian.java b/src/main/java/net/minecraft/world/entity/monster/ElderGuardian.java index 61fa65292c75661a48012e215368055708560360..ac36e59cf53c7a2ab0efea5741d142fb3d646557 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ElderGuardian.java +++ b/src/main/java/net/minecraft/world/entity/monster/ElderGuardian.java @@ -38,6 +38,11 @@ public class ElderGuardian extends Guardian { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.elderGuardianMaxHealth); } + @Override + public boolean isSensitiveToWater() { + return this.level.purpurConfig.elderGuardianTakeDamageFromWater; + } + public static AttributeSupplier.Builder createAttributes() { 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 444993e357e7a3e4aba0b0a73760fe478f6461ff..69da4fc206d33c7ff401c86edc86d0f308ad7c1f 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -89,7 +89,7 @@ public class EnderMan extends Monster implements NeutralMob { public EnderMan(EntityType type, Level world) { super(type, world); this.setMaxUpStep(1.0F); - this.setPathfindingMalus(BlockPathTypes.WATER, -1.0F); + if (isSensitiveToWater()) this.setPathfindingMalus(BlockPathTypes.WATER, -1.0F); // Purpur } @Override @@ -283,7 +283,7 @@ public class EnderMan extends Monster implements NeutralMob { @Override public boolean isSensitiveToWater() { - return true; + return this.level.purpurConfig.endermanTakeDamageFromWater; // Purpur } @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Endermite.java b/src/main/java/net/minecraft/world/entity/monster/Endermite.java index 07e709f886bd182511d92e27a2f77f8a0c93500f..e3573708cf8497935144aa270e1a1d5781d3ec7f 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Endermite.java +++ b/src/main/java/net/minecraft/world/entity/monster/Endermite.java @@ -42,6 +42,11 @@ public class Endermite extends Monster { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.endermiteMaxHealth); } + @Override + public boolean isSensitiveToWater() { + return this.level.purpurConfig.endermiteTakeDamageFromWater; + } + @Override protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Evoker.java b/src/main/java/net/minecraft/world/entity/monster/Evoker.java index eaf84c30701dbe8562e0d498f088f0461c53c442..ad2910d1c12bf8f7ba3093fa4c9e9f8cb06fef03 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Evoker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Evoker.java @@ -53,6 +53,11 @@ public class Evoker extends SpellcasterIllager { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.evokerMaxHealth); } + @Override + public boolean isSensitiveToWater() { + return this.level.purpurConfig.evokerTakeDamageFromWater; + } + @Override protected void registerGoals() { super.registerGoals(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Ghast.java b/src/main/java/net/minecraft/world/entity/monster/Ghast.java index 2cb35b9b35f1c449784226caf200e8e19dccc64a..a20d843c10af7089fda45f92ea366d884570708d 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Ghast.java +++ b/src/main/java/net/minecraft/world/entity/monster/Ghast.java @@ -101,6 +101,11 @@ public class Ghast extends FlyingMob implements Enemy { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.ghastMaxHealth); } + @Override + public boolean isSensitiveToWater() { + return this.level.purpurConfig.ghastTakeDamageFromWater; + } + @Override protected void defineSynchedData() { super.defineSynchedData(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Giant.java b/src/main/java/net/minecraft/world/entity/monster/Giant.java index 3d45d1a5091fbf7dd275aebfca336d80a72010b0..75ded7406f023680a221119a7dfb69586d9241f1 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Giant.java +++ b/src/main/java/net/minecraft/world/entity/monster/Giant.java @@ -38,6 +38,11 @@ public class Giant extends Monster { this.safeFallDistance = 10.0F; // Purpur } + @Override + public boolean isSensitiveToWater() { + return this.level.purpurConfig.giantTakeDamageFromWater; + } + @Override protected void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.giantMaxHealth); diff --git a/src/main/java/net/minecraft/world/entity/monster/Guardian.java b/src/main/java/net/minecraft/world/entity/monster/Guardian.java index afae01e4bf1c22eafe06243a23dd21cd6894ca92..7811e226d2cda0e7b2d4539c7b87bcedc09b2586 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Guardian.java +++ b/src/main/java/net/minecraft/world/entity/monster/Guardian.java @@ -78,6 +78,11 @@ public class Guardian extends Monster { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.guardianMaxHealth); } + @Override + public boolean isSensitiveToWater() { + return this.level.purpurConfig.guardianTakeDamageFromWater; + } + @Override protected void registerGoals() { MoveTowardsRestrictionGoal pathfindergoalmovetowardsrestriction = new MoveTowardsRestrictionGoal(this, 1.0D); diff --git a/src/main/java/net/minecraft/world/entity/monster/Husk.java b/src/main/java/net/minecraft/world/entity/monster/Husk.java index d35c3630d7aba71271038cee04d97ca98038c847..2c605d8acc12177baedacc265b276f66e268d0a2 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Husk.java +++ b/src/main/java/net/minecraft/world/entity/monster/Husk.java @@ -47,6 +47,11 @@ public class Husk extends Zombie { return level.purpurConfig.huskJockeyTryExistingChickens; } + @Override + public boolean isSensitiveToWater() { + return this.level.purpurConfig.huskTakeDamageFromWater; + } + public static boolean checkHuskSpawnRules(EntityType type, ServerLevelAccessor world, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { return checkMonsterSpawnRules(type, world, spawnReason, pos, random) && (spawnReason == MobSpawnType.SPAWNER || world.canSeeSky(pos)); } diff --git a/src/main/java/net/minecraft/world/entity/monster/Illusioner.java b/src/main/java/net/minecraft/world/entity/monster/Illusioner.java index 03646f5ffa43b19679241999877da1e93b293744..d3f6ccde772f606f99d70980ff9e0318835196fb 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Illusioner.java +++ b/src/main/java/net/minecraft/world/entity/monster/Illusioner.java @@ -66,6 +66,11 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.illusionerMaxHealth); } + @Override + public boolean isSensitiveToWater() { + return this.level.purpurConfig.illusionerTakeDamageFromWater; + } + @Override protected void registerGoals() { super.registerGoals(); diff --git a/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java b/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java index 0f375ed5073435f6826c4d946e50a2d24ae54be0..1cdff3875c82e2fc900bc4e58c58c2f3607abbb4 100644 --- a/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java +++ b/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java @@ -45,6 +45,11 @@ public class MagmaCube extends Slime { return level.purpurConfig.magmaCubeAttackDamageCache; } + @Override + public boolean isSensitiveToWater() { + return this.level.purpurConfig.magmaCubeTakeDamageFromWater; + } + public static AttributeSupplier.Builder createAttributes() { return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, (double)0.2F); } diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java index c0980014edd84582f179882e9d63abb5474df622..935cab241766f11b2dc957403db35d43b93e9080 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java @@ -61,6 +61,11 @@ public class Phantom extends FlyingMob implements Enemy { this.lookControl = new Phantom.PhantomLookControl(this); } + @Override + public boolean isSensitiveToWater() { + return this.level.purpurConfig.phantomTakeDamageFromWater; + } + @Override public boolean isFlapping() { return (this.getUniqueFlapTickOffset() + this.tickCount) % Phantom.TICKS_PER_FLAP == 0; diff --git a/src/main/java/net/minecraft/world/entity/monster/Pillager.java b/src/main/java/net/minecraft/world/entity/monster/Pillager.java index 508d76f5120ec614092669af7d7c61f7216c8dc3..b102b360f48aab31d5a9c4d1b5fd136369b55df2 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Pillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/Pillager.java @@ -67,6 +67,11 @@ public class Pillager extends AbstractIllager implements CrossbowAttackMob, Inve this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.pillagerMaxHealth); } + @Override + public boolean isSensitiveToWater() { + return this.level.purpurConfig.pillagerTakeDamageFromWater; + } + @Override protected void registerGoals() { super.registerGoals(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Ravager.java b/src/main/java/net/minecraft/world/entity/monster/Ravager.java index 26ca7b3ac44f24c324f0f97e0e2bb5ed62f3aa73..5fc6506c1d0d064c5adce5416eb1c1049ae8cf01 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Ravager.java +++ b/src/main/java/net/minecraft/world/entity/monster/Ravager.java @@ -70,6 +70,11 @@ public class Ravager extends Raider { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.ravagerMaxHealth); } + @Override + public boolean isSensitiveToWater() { + return this.level.purpurConfig.ravagerTakeDamageFromWater; + } + @Override protected void registerGoals() { super.registerGoals(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Shulker.java b/src/main/java/net/minecraft/world/entity/monster/Shulker.java index b7900691214fabe130f163253879c38952b9a20b..4017784e5b722887caf8ab5d17579e6daf50c5b4 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Shulker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Shulker.java @@ -103,6 +103,11 @@ public class Shulker extends AbstractGolem implements VariantHolder type, ServerLevelAccessor world, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { BlockPos blockPos = pos; diff --git a/src/main/java/net/minecraft/world/entity/monster/Strider.java b/src/main/java/net/minecraft/world/entity/monster/Strider.java index 7d57137951c9493265623f8674b8900c850ef396..5edfb858b081ff1be289c3e139fdb0beb9e53958 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Strider.java +++ b/src/main/java/net/minecraft/world/entity/monster/Strider.java @@ -94,7 +94,7 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { super(type, world); this.steering = new ItemBasedSteering(this.entityData, Strider.DATA_BOOST_TIME, Strider.DATA_SADDLE_ID); this.blocksBuilding = true; - this.setPathfindingMalus(BlockPathTypes.WATER, -1.0F); + if (isSensitiveToWater()) this.setPathfindingMalus(BlockPathTypes.WATER, -1.0F); // Purpur this.setPathfindingMalus(BlockPathTypes.LAVA, 0.0F); this.setPathfindingMalus(BlockPathTypes.DANGER_FIRE, 0.0F); this.setPathfindingMalus(BlockPathTypes.DAMAGE_FIRE, 0.0F); @@ -426,7 +426,7 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { @Override public boolean isSensitiveToWater() { - return true; + return this.level.purpurConfig.striderTakeDamageFromWater; // Purpur } @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Vex.java b/src/main/java/net/minecraft/world/entity/monster/Vex.java index 41b6c2d33121144e062f0733db55ec6a40603020..e7f3a3688a3c339d8e223afce6147fa94efcf01e 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Vex.java +++ b/src/main/java/net/minecraft/world/entity/monster/Vex.java @@ -68,6 +68,11 @@ public class Vex extends Monster implements TraceableEntity { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.vexMaxHealth); } + @Override + public boolean isSensitiveToWater() { + return this.level.purpurConfig.vexTakeDamageFromWater; + } + @Override protected float getStandingEyeHeight(Pose pose, EntityDimensions dimensions) { return dimensions.height - 0.28125F; diff --git a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java index 886d42e847b400f166ccbdf7a0f61744080a8b54..9e142e5b0973c89a5b623e651360752f22e9cc5b 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java +++ b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java @@ -63,6 +63,11 @@ public class Vindicator extends AbstractIllager { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.vindicatorMaxHealth); } + @Override + public boolean isSensitiveToWater() { + return this.level.purpurConfig.vindicatorTakeDamageFromWater; + } + @Override protected void registerGoals() { super.registerGoals(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Witch.java b/src/main/java/net/minecraft/world/entity/monster/Witch.java index 956e0f5ea71f01f4ae192c8c8e0f1e8b323b06ba..e4d2c02bf9264ccea2c4aadf31b6f26b44f97802 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Witch.java +++ b/src/main/java/net/minecraft/world/entity/monster/Witch.java @@ -62,6 +62,11 @@ public class Witch extends Raider implements RangedAttackMob { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.witchMaxHealth); } + @Override + public boolean isSensitiveToWater() { + return this.level.purpurConfig.witchTakeDamageFromWater; + } + @Override protected void registerGoals() { super.registerGoals(); diff --git a/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java index dda157fa91572198407a0840079cd18473adae4e..c7964f89805a72dfb1746f78d3310cea876bf19b 100644 --- a/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java @@ -40,6 +40,11 @@ public class WitherSkeleton extends AbstractSkeleton { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.witherSkeletonMaxHealth); } + @Override + public boolean isSensitiveToWater() { + return this.level.purpurConfig.witherSkeletonTakeDamageFromWater; + } + @Override protected void registerGoals() { this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractPiglin.class, true)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java index 54ce647b16efcc15d378009e56691cdf47bd04e4..5491c38e2c40859e1087801836831f1ff16e923f 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java @@ -72,6 +72,11 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.zoglinMaxHealth); } + @Override + public boolean isSensitiveToWater() { + return this.level.purpurConfig.zoglinTakeDamageFromWater; + } + @Override protected Brain.Provider 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 fddee85b60de8fe75f6a6bab43a0989509850b18..a7f1c1f38b187cc5a67a9ef08fa432b80f450617 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -123,6 +123,11 @@ public class Zombie extends Monster { return level.purpurConfig.zombieJockeyTryExistingChickens; } + @Override + public boolean isSensitiveToWater() { + return this.level.purpurConfig.zombieTakeDamageFromWater; + } + @Override protected void registerGoals() { if (this.level().paperConfig().entities.behavior.zombiesTargetTurtleEggs) this.goalSelector.addGoal(4, new Zombie.ZombieAttackTurtleEggGoal(this, 1.0D, 3)); // Paper 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 1f0265ee248da4dc1bf57a1d3d58aee52184fe72..818fc0b9bc6bd95c46b5939f0a09c6e6f86b80e4 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java @@ -104,6 +104,11 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { return level.purpurConfig.zombieVillagerJockeyTryExistingChickens; } + @Override + public boolean isSensitiveToWater() { + return this.level.purpurConfig.zombieVillagerTakeDamageFromWater; + } + @Override protected void defineSynchedData() { super.defineSynchedData(); diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java index c8a024c9bd7c9cdbeff029bfacf4dba91e6ac580..2d4bf7dea360d72bcc33c10f00f2416599f85c83 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java @@ -83,6 +83,11 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { return level.purpurConfig.zombifiedPiglinJockeyTryExistingChickens; } + @Override + public boolean isSensitiveToWater() { + return this.level.purpurConfig.zombifiedPiglinTakeDamageFromWater; + } + @Override public void setPersistentAngerTarget(@Nullable UUID angryAt) { this.persistentAngerTarget = angryAt; diff --git a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java index 467ea5292a5dca5679b0e9b92b75447c3770fae0..639bbbf36ba6a627a26fc8cd112f3d2896cb45ab 100644 --- a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java @@ -77,6 +77,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { return this.level.purpurConfig.hoglinBreedingTicks; } + @Override + public boolean isSensitiveToWater() { + return this.level.purpurConfig.hoglinTakeDamageFromWater; + } + @Override public boolean canBeLeashed(Player player) { return !this.isLeashed(); diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java index 20339cb8a1fa4ca0716c7362276fc0cb9add6dee..eb27d6934f165d7f958ad441feb18a95c9ed4c24 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java @@ -101,6 +101,11 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.piglinMaxHealth); } + @Override + public boolean isSensitiveToWater() { + return this.level.purpurConfig.piglinTakeDamageFromWater; + } + @Override public void addAdditionalSaveData(CompoundTag nbt) { super.addAdditionalSaveData(nbt); diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java index 5f4dcb1d2fd8e3354fb5148512648062463b5bd8..2f6b55361f62f9f9125fec9b3ca062f98e1768a7 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java @@ -46,6 +46,11 @@ public class PiglinBrute extends AbstractPiglin { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.piglinBruteMaxHealth); } + @Override + public boolean isSensitiveToWater() { + return this.level.purpurConfig.piglinBruteTakeDamageFromWater; + } + public static AttributeSupplier.Builder createAttributes() { 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 8144e3c60bc586bd48677a1d1af3b20f1a1fa337..8e32ba64acfc1b671b859be23f3a84fb4151b570 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -165,6 +165,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler return level.purpurConfig.villagerCanBeLeashed && !this.isLeashed(); } + @Override + public boolean isSensitiveToWater() { + return this.level.purpurConfig.villagerTakeDamageFromWater; + } + @Override 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 5bf96ff879318ea1be45f89b8689b6739ed9ca5b..86c8e3d6ad7bb497c50433ff882fab3f5bd7b6ad 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java @@ -76,6 +76,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill return level.purpurConfig.wanderingTraderCanBeLeashed && !this.isLeashed(); } + @Override + public boolean isSensitiveToWater() { + return this.level.purpurConfig.wanderingTraderTakeDamageFromWater; + } + @Override 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 f39c4a2acf8d6af849ce3c0ef319a58a203b08c1..f3a2c3cd83d8048df9d0df86220d59f2ce4c10af 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -547,9 +547,11 @@ public class PurpurWorldConfig { public double axolotlMaxHealth = 14.0D; public int axolotlBreedingTicks = 6000; + public boolean axolotlTakeDamageFromWater = false; private void axolotlSettings() { axolotlMaxHealth = getDouble("mobs.axolotl.attributes.max_health", axolotlMaxHealth); axolotlBreedingTicks = getInt("mobs.axolotl.breeding-delay-ticks", axolotlBreedingTicks); + axolotlTakeDamageFromWater = getBoolean("mobs.axolotl.takes-damage-from-water", axolotlTakeDamageFromWater); } public double batMaxHealth = 6.0D; @@ -560,6 +562,7 @@ public class PurpurWorldConfig { public double batArmor = 0.0D; public double batArmorToughness = 0.0D; public double batAttackKnockback = 0.0D; + public boolean batTakeDamageFromWater = false; private void batSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.bat.attributes.max-health", batMaxHealth); @@ -574,10 +577,12 @@ public class PurpurWorldConfig { batArmor = getDouble("mobs.bat.attributes.armor", batArmor); batArmorToughness = getDouble("mobs.bat.attributes.armor_toughness", batArmorToughness); batAttackKnockback = getDouble("mobs.bat.attributes.attack_knockback", batAttackKnockback); + batTakeDamageFromWater = getBoolean("mobs.bat.takes-damage-from-water", batTakeDamageFromWater); } public double beeMaxHealth = 10.0D; public int beeBreedingTicks = 6000; + public boolean beeTakeDamageFromWater = false; private void beeSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.bee.attributes.max-health", beeMaxHealth); @@ -586,9 +591,11 @@ public class PurpurWorldConfig { } beeMaxHealth = getDouble("mobs.bee.attributes.max_health", beeMaxHealth); beeBreedingTicks = getInt("mobs.bee.breeding-delay-ticks", beeBreedingTicks); + beeTakeDamageFromWater = getBoolean("mobs.bee.takes-damage-from-water", beeTakeDamageFromWater); } public double blazeMaxHealth = 20.0D; + public boolean blazeTakeDamageFromWater = true; private void blazeSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.blaze.attributes.max-health", blazeMaxHealth); @@ -596,6 +603,7 @@ public class PurpurWorldConfig { set("mobs.blaze.attributes.max_health", oldValue); } blazeMaxHealth = getDouble("mobs.blaze.attributes.max_health", blazeMaxHealth); + blazeTakeDamageFromWater = getBoolean("mobs.blaze.takes-damage-from-water", blazeTakeDamageFromWater); } public int camelBreedingTicks = 6000; @@ -621,6 +629,7 @@ public class PurpurWorldConfig { public int catSpawnVillageScanRange = 48; public int catBreedingTicks = 6000; public DyeColor catDefaultCollarColor = DyeColor.RED; + public boolean catTakeDamageFromWater = false; private void catSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.cat.attributes.max-health", catMaxHealth); @@ -637,9 +646,11 @@ public class PurpurWorldConfig { } catch (IllegalArgumentException ignore) { catDefaultCollarColor = DyeColor.RED; } + catTakeDamageFromWater = getBoolean("mobs.cat.takes-damage-from-water", catTakeDamageFromWater); } public double caveSpiderMaxHealth = 12.0D; + public boolean caveSpiderTakeDamageFromWater = false; private void caveSpiderSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.cave_spider.attributes.max-health", caveSpiderMaxHealth); @@ -647,11 +658,13 @@ public class PurpurWorldConfig { set("mobs.cave_spider.attributes.max_health", oldValue); } caveSpiderMaxHealth = getDouble("mobs.cave_spider.attributes.max_health", caveSpiderMaxHealth); + caveSpiderTakeDamageFromWater = getBoolean("mobs.cave_spider.takes-damage-from-water", caveSpiderTakeDamageFromWater); } public double chickenMaxHealth = 4.0D; public boolean chickenRetaliate = false; public int chickenBreedingTicks = 6000; + public boolean chickenTakeDamageFromWater = false; private void chickenSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.chicken.attributes.max-health", chickenMaxHealth); @@ -661,9 +674,11 @@ public class PurpurWorldConfig { chickenMaxHealth = getDouble("mobs.chicken.attributes.max_health", chickenMaxHealth); chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate); chickenBreedingTicks = getInt("mobs.chicken.breeding-delay-ticks", chickenBreedingTicks); + chickenTakeDamageFromWater = getBoolean("mobs.chicken.takes-damage-from-water", chickenTakeDamageFromWater); } public double codMaxHealth = 3.0D; + public boolean codTakeDamageFromWater = false; private void codSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.cod.attributes.max-health", codMaxHealth); @@ -671,11 +686,13 @@ public class PurpurWorldConfig { set("mobs.cod.attributes.max_health", oldValue); } codMaxHealth = getDouble("mobs.cod.attributes.max_health", codMaxHealth); + codTakeDamageFromWater = getBoolean("mobs.cod.takes-damage-from-water", codTakeDamageFromWater); } public double cowMaxHealth = 10.0D; public int cowFeedMushrooms = 0; public int cowBreedingTicks = 6000; + public boolean cowTakeDamageFromWater = false; private void cowSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.cow.attributes.max-health", cowMaxHealth); @@ -685,12 +702,14 @@ public class PurpurWorldConfig { cowMaxHealth = getDouble("mobs.cow.attributes.max_health", cowMaxHealth); cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms); cowBreedingTicks = getInt("mobs.cow.breeding-delay-ticks", cowBreedingTicks); + cowTakeDamageFromWater = getBoolean("mobs.cow.takes-damage-from-water", cowTakeDamageFromWater); } public double creeperMaxHealth = 20.0D; public double creeperChargedChance = 0.0D; public boolean creeperAllowGriefing = true; public boolean creeperBypassMobGriefing = false; + public boolean creeperTakeDamageFromWater = false; private void creeperSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.creeper.attributes.max-health", creeperMaxHealth); @@ -701,10 +720,12 @@ public class PurpurWorldConfig { creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance); creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing); creeperBypassMobGriefing = getBoolean("mobs.creeper.bypass-mob-griefing", creeperBypassMobGriefing); + creeperTakeDamageFromWater = getBoolean("mobs.creeper.takes-damage-from-water", creeperTakeDamageFromWater); } public double dolphinMaxHealth = 10.0D; public boolean dolphinDisableTreasureSearching = false; + public boolean dolphinTakeDamageFromWater = false; private void dolphinSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.dolphin.attributes.max-health", dolphinMaxHealth); @@ -713,6 +734,7 @@ public class PurpurWorldConfig { } dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth); dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching); + dolphinTakeDamageFromWater = getBoolean("mobs.dolphin.takes-damage-from-water", dolphinTakeDamageFromWater); } public double donkeyMaxHealthMin = 15.0D; @@ -722,6 +744,7 @@ public class PurpurWorldConfig { public double donkeyMovementSpeedMin = 0.175D; public double donkeyMovementSpeedMax = 0.175D; public int donkeyBreedingTicks = 6000; + public boolean donkeyTakeDamageFromWater = false; private void donkeySettings() { if (PurpurConfig.version < 10) { double oldMin = getDouble("mobs.donkey.attributes.max-health.min", donkeyMaxHealthMin); @@ -737,6 +760,7 @@ public class PurpurWorldConfig { donkeyMovementSpeedMin = getDouble("mobs.donkey.attributes.movement_speed.min", donkeyMovementSpeedMin); donkeyMovementSpeedMax = getDouble("mobs.donkey.attributes.movement_speed.max", donkeyMovementSpeedMax); donkeyBreedingTicks = getInt("mobs.donkey.breeding-delay-ticks", donkeyBreedingTicks); + donkeyTakeDamageFromWater = getBoolean("mobs.donkey.takes-damage-from-water", donkeyTakeDamageFromWater); } public double drownedMaxHealth = 20.0D; @@ -744,6 +768,7 @@ public class PurpurWorldConfig { public boolean drownedJockeyOnlyBaby = true; public double drownedJockeyChance = 0.05D; public boolean drownedJockeyTryExistingChickens = true; + public boolean drownedTakeDamageFromWater = false; private void drownedSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.drowned.attributes.max-health", drownedMaxHealth); @@ -755,9 +780,11 @@ public class PurpurWorldConfig { drownedJockeyOnlyBaby = getBoolean("mobs.drowned.jockey.only-babies", drownedJockeyOnlyBaby); drownedJockeyChance = getDouble("mobs.drowned.jockey.chance", drownedJockeyChance); drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens); + drownedTakeDamageFromWater = getBoolean("mobs.drowned.takes-damage-from-water", drownedTakeDamageFromWater); } public double elderGuardianMaxHealth = 80.0D; + public boolean elderGuardianTakeDamageFromWater = false; private void elderGuardianSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.elder_guardian.attributes.max-health", elderGuardianMaxHealth); @@ -765,11 +792,13 @@ public class PurpurWorldConfig { set("mobs.elder_guardian.attributes.max_health", oldValue); } elderGuardianMaxHealth = getDouble("mobs.elder_guardian.attributes.max_health", elderGuardianMaxHealth); + elderGuardianTakeDamageFromWater = getBoolean("mobs.elder_guardian.takes-damage-from-water", elderGuardianTakeDamageFromWater); } public double enderDragonMaxHealth = 200.0D; public boolean enderDragonAlwaysDropsFullExp = false; public boolean enderDragonBypassMobGriefing = false; + public boolean enderDragonTakeDamageFromWater = false; private void enderDragonSettings() { if (PurpurConfig.version < 8) { double oldValue = getDouble("mobs.ender_dragon.max-health", enderDragonMaxHealth); @@ -783,12 +812,14 @@ public class PurpurWorldConfig { enderDragonMaxHealth = getDouble("mobs.ender_dragon.attributes.max_health", enderDragonMaxHealth); enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp); enderDragonBypassMobGriefing = getBoolean("mobs.ender_dragon.bypass-mob-griefing", enderDragonBypassMobGriefing); + enderDragonTakeDamageFromWater = getBoolean("mobs.ender_dragon.takes-damage-from-water", enderDragonTakeDamageFromWater); } public double endermanMaxHealth = 40.0D; public boolean endermanAllowGriefing = true; public boolean endermanDespawnEvenWithBlock = false; public boolean endermanBypassMobGriefing = false; + public boolean endermanTakeDamageFromWater = true; private void endermanSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.enderman.attributes.max-health", endermanMaxHealth); @@ -799,9 +830,11 @@ public class PurpurWorldConfig { endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing); endermanDespawnEvenWithBlock = getBoolean("mobs.enderman.can-despawn-with-held-block", endermanDespawnEvenWithBlock); endermanBypassMobGriefing = getBoolean("mobs.enderman.bypass-mob-griefing", endermanBypassMobGriefing); + endermanTakeDamageFromWater = getBoolean("mobs.enderman.takes-damage-from-water", endermanTakeDamageFromWater); } public double endermiteMaxHealth = 8.0D; + public boolean endermiteTakeDamageFromWater = false; private void endermiteSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.endermite.attributes.max-health", endermiteMaxHealth); @@ -809,10 +842,12 @@ public class PurpurWorldConfig { set("mobs.endermite.attributes.max_health", oldValue); } endermiteMaxHealth = getDouble("mobs.endermite.attributes.max_health", endermiteMaxHealth); + endermiteTakeDamageFromWater = getBoolean("mobs.endermite.takes-damage-from-water", endermiteTakeDamageFromWater); } public double evokerMaxHealth = 24.0D; public boolean evokerBypassMobGriefing = false; + public boolean evokerTakeDamageFromWater = false; private void evokerSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.evoker.attributes.max-health", evokerMaxHealth); @@ -821,12 +856,14 @@ public class PurpurWorldConfig { } evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth); evokerBypassMobGriefing = getBoolean("mobs.evoker.bypass-mob-griefing", evokerBypassMobGriefing); + evokerTakeDamageFromWater = getBoolean("mobs.evoker.takes-damage-from-water", evokerTakeDamageFromWater); } public double foxMaxHealth = 10.0D; public boolean foxTypeChangesWithTulips = false; public int foxBreedingTicks = 6000; public boolean foxBypassMobGriefing = false; + public boolean foxTakeDamageFromWater = false; private void foxSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.fox.attributes.max-health", foxMaxHealth); @@ -837,6 +874,7 @@ public class PurpurWorldConfig { foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips); foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks); foxBypassMobGriefing = getBoolean("mobs.fox.bypass-mob-griefing", foxBypassMobGriefing); + foxTakeDamageFromWater = getBoolean("mobs.fox.takes-damage-from-water", foxTakeDamageFromWater); } public int frogBreedingTicks = 6000; @@ -845,6 +883,7 @@ public class PurpurWorldConfig { } public double ghastMaxHealth = 10.0D; + public boolean ghastTakeDamageFromWater = false; private void ghastSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.ghast.attributes.max-health", ghastMaxHealth); @@ -852,6 +891,7 @@ public class PurpurWorldConfig { set("mobs.ghast.attributes.max_health", oldValue); } ghastMaxHealth = getDouble("mobs.ghast.attributes.max_health", ghastMaxHealth); + ghastTakeDamageFromWater = getBoolean("mobs.ghast.takes-damage-from-water", ghastTakeDamageFromWater); } public double giantMovementSpeed = 0.5D; @@ -861,6 +901,7 @@ public class PurpurWorldConfig { public float giantJumpHeight = 1.0F; public boolean giantHaveAI = false; public boolean giantHaveHostileAI = false; + public boolean giantTakeDamageFromWater = false; private void giantSettings() { giantMovementSpeed = getDouble("mobs.giant.movement-speed", giantMovementSpeed); giantAttackDamage = getDouble("mobs.giant.attack-damage", giantAttackDamage); @@ -878,23 +919,29 @@ public class PurpurWorldConfig { giantJumpHeight = (float) getDouble("mobs.giant.jump-height", giantJumpHeight); giantHaveAI = getBoolean("mobs.giant.have-ai", giantHaveAI); giantHaveHostileAI = getBoolean("mobs.giant.have-hostile-ai", giantHaveHostileAI); + giantTakeDamageFromWater = getBoolean("mobs.giant.takes-damage-from-water", giantTakeDamageFromWater); } public double glowSquidMaxHealth = 10.0D; public boolean glowSquidsCanFly = false; + public boolean glowSquidTakeDamageFromWater = false; private void glowSquidSettings() { glowSquidMaxHealth = getDouble("mobs.glow_squid.attributes.max_health", glowSquidMaxHealth); glowSquidsCanFly = getBoolean("mobs.glow_squid.can-fly", glowSquidsCanFly); + glowSquidTakeDamageFromWater = getBoolean("mobs.glow_squid.takes-damage-from-water", glowSquidTakeDamageFromWater); } public double goatMaxHealth = 10.0D; public int goatBreedingTicks = 6000; + public boolean goatTakeDamageFromWater = false; private void goatSettings() { goatMaxHealth = getDouble("mobs.goat.attributes.max_health", goatMaxHealth); goatBreedingTicks = getInt("mobs.goat.breeding-delay-ticks", goatBreedingTicks); + goatTakeDamageFromWater = getBoolean("mobs.goat.takes-damage-from-water", goatTakeDamageFromWater); } public double guardianMaxHealth = 30.0D; + public boolean guardianTakeDamageFromWater = false; private void guardianSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.guardian.attributes.max-health", guardianMaxHealth); @@ -902,10 +949,12 @@ public class PurpurWorldConfig { set("mobs.guardian.attributes.max_health", oldValue); } guardianMaxHealth = getDouble("mobs.guardian.attributes.max_health", guardianMaxHealth); + guardianTakeDamageFromWater = getBoolean("mobs.guardian.takes-damage-from-water", guardianTakeDamageFromWater); } public double hoglinMaxHealth = 40.0D; public int hoglinBreedingTicks = 6000; + public boolean hoglinTakeDamageFromWater = false; private void hoglinSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.hoglin.attributes.max-health", hoglinMaxHealth); @@ -914,6 +963,7 @@ public class PurpurWorldConfig { } hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth); hoglinBreedingTicks = getInt("mobs.hoglin.breeding-delay-ticks", hoglinBreedingTicks); + hoglinTakeDamageFromWater = getBoolean("mobs.hoglin.takes-damage-from-water", hoglinTakeDamageFromWater); } public double horseMaxHealthMin = 15.0D; @@ -923,6 +973,7 @@ public class PurpurWorldConfig { public double horseMovementSpeedMin = 0.1125D; public double horseMovementSpeedMax = 0.3375D; public int horseBreedingTicks = 6000; + public boolean horseTakeDamageFromWater = false; private void horseSettings() { if (PurpurConfig.version < 10) { double oldMin = getDouble("mobs.horse.attributes.max-health.min", horseMaxHealthMin); @@ -938,6 +989,7 @@ public class PurpurWorldConfig { horseMovementSpeedMin = getDouble("mobs.horse.attributes.movement_speed.min", horseMovementSpeedMin); horseMovementSpeedMax = getDouble("mobs.horse.attributes.movement_speed.max", horseMovementSpeedMax); horseBreedingTicks = getInt("mobs.horse.breeding-delay-ticks", horseBreedingTicks); + horseTakeDamageFromWater = getBoolean("mobs.horse.takes-damage-from-water", horseTakeDamageFromWater); } public double huskMaxHealth = 20.0D; @@ -945,6 +997,7 @@ public class PurpurWorldConfig { public boolean huskJockeyOnlyBaby = true; public double huskJockeyChance = 0.05D; public boolean huskJockeyTryExistingChickens = true; + public boolean huskTakeDamageFromWater = false; private void huskSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.husk.attributes.max-health", huskMaxHealth); @@ -956,11 +1009,13 @@ public class PurpurWorldConfig { huskJockeyOnlyBaby = getBoolean("mobs.husk.jockey.only-babies", huskJockeyOnlyBaby); huskJockeyChance = getDouble("mobs.husk.jockey.chance", huskJockeyChance); huskJockeyTryExistingChickens = getBoolean("mobs.husk.jockey.try-existing-chickens", huskJockeyTryExistingChickens); + huskTakeDamageFromWater = getBoolean("mobs.husk.takes-damage-from-water", huskTakeDamageFromWater); } public double illusionerMovementSpeed = 0.5D; public double illusionerFollowRange = 18.0D; public double illusionerMaxHealth = 32.0D; + public boolean illusionerTakeDamageFromWater = false; private void illusionerSettings() { illusionerMovementSpeed = getDouble("mobs.illusioner.movement-speed", illusionerMovementSpeed); illusionerFollowRange = getDouble("mobs.illusioner.follow-range", illusionerFollowRange); @@ -974,9 +1029,11 @@ public class PurpurWorldConfig { set("mobs.illusioner.attributes.max_health", oldValue); } illusionerMaxHealth = getDouble("mobs.illusioner.attributes.max_health", illusionerMaxHealth); + illusionerTakeDamageFromWater = getBoolean("mobs.illusioner.takes-damage-from-water", illusionerTakeDamageFromWater); } public double ironGolemMaxHealth = 100.0D; + public boolean ironGolemTakeDamageFromWater = false; private void ironGolemSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.iron_golem.attributes.max-health", ironGolemMaxHealth); @@ -984,6 +1041,7 @@ public class PurpurWorldConfig { set("mobs.iron_golem.attributes.max_health", oldValue); } ironGolemMaxHealth = getDouble("mobs.iron_golem.attributes.max_health", ironGolemMaxHealth); + ironGolemTakeDamageFromWater = getBoolean("mobs.iron_golem.takes-damage-from-water", ironGolemTakeDamageFromWater); } public boolean llamaRidable = false; @@ -996,6 +1054,7 @@ public class PurpurWorldConfig { public double llamaMovementSpeedMin = 0.175D; public double llamaMovementSpeedMax = 0.175D; public int llamaBreedingTicks = 6000; + public boolean llamaTakeDamageFromWater = false; private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); @@ -1014,12 +1073,14 @@ public class PurpurWorldConfig { llamaMovementSpeedMin = getDouble("mobs.llama.attributes.movement_speed.min", llamaMovementSpeedMin); llamaMovementSpeedMax = getDouble("mobs.llama.attributes.movement_speed.max", llamaMovementSpeedMax); llamaBreedingTicks = getInt("mobs.llama.breeding-delay-ticks", llamaBreedingTicks); + llamaTakeDamageFromWater = getBoolean("mobs.llama.takes-damage-from-water", llamaTakeDamageFromWater); } public String magmaCubeMaxHealth = "size * size"; public String magmaCubeAttackDamage = "size"; public Map magmaCubeMaxHealthCache = new HashMap<>(); public Map magmaCubeAttackDamageCache = new HashMap<>(); + public boolean magmaCubeTakeDamageFromWater = false; private void magmaCubeSettings() { if (PurpurConfig.version < 10) { String oldValue = getString("mobs.magma_cube.attributes.max-health", magmaCubeMaxHealth); @@ -1030,10 +1091,12 @@ public class PurpurWorldConfig { magmaCubeAttackDamage = getString("mobs.magma_cube.attributes.attack_damage", magmaCubeAttackDamage); magmaCubeMaxHealthCache.clear(); magmaCubeAttackDamageCache.clear(); + magmaCubeTakeDamageFromWater = getBoolean("mobs.magma_cube.takes-damage-from-water", magmaCubeTakeDamageFromWater); } public double mooshroomMaxHealth = 10.0D; public int mooshroomBreedingTicks = 6000; + public boolean mooshroomTakeDamageFromWater = false; private void mooshroomSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.mooshroom.attributes.max-health", mooshroomMaxHealth); @@ -1042,6 +1105,7 @@ public class PurpurWorldConfig { } mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth); mooshroomBreedingTicks = getInt("mobs.mooshroom.breeding-delay-ticks", mooshroomBreedingTicks); + mooshroomTakeDamageFromWater = getBoolean("mobs.mooshroom.takes-damage-from-water", mooshroomTakeDamageFromWater); } public double muleMaxHealthMin = 15.0D; @@ -1051,6 +1115,7 @@ public class PurpurWorldConfig { public double muleMovementSpeedMin = 0.175D; public double muleMovementSpeedMax = 0.175D; public int muleBreedingTicks = 6000; + public boolean muleTakeDamageFromWater = false; private void muleSettings() { if (PurpurConfig.version < 10) { double oldMin = getDouble("mobs.mule.attributes.max-health.min", muleMaxHealthMin); @@ -1066,10 +1131,12 @@ public class PurpurWorldConfig { muleMovementSpeedMin = getDouble("mobs.mule.attributes.movement_speed.min", muleMovementSpeedMin); muleMovementSpeedMax = getDouble("mobs.mule.attributes.movement_speed.max", muleMovementSpeedMax); muleBreedingTicks = getInt("mobs.mule.breeding-delay-ticks", muleBreedingTicks); + muleTakeDamageFromWater = getBoolean("mobs.mule.takes-damage-from-water", muleTakeDamageFromWater); } public double ocelotMaxHealth = 10.0D; public int ocelotBreedingTicks = 6000; + public boolean ocelotTakeDamageFromWater = false; private void ocelotSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.ocelot.attributes.max-health", ocelotMaxHealth); @@ -1078,10 +1145,12 @@ public class PurpurWorldConfig { } ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth); ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); + ocelotTakeDamageFromWater = getBoolean("mobs.ocelot.takes-damage-from-water", ocelotTakeDamageFromWater); } public double pandaMaxHealth = 20.0D; public int pandaBreedingTicks = 6000; + public boolean pandaTakeDamageFromWater = false; private void pandaSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.panda.attributes.max-health", pandaMaxHealth); @@ -1090,9 +1159,11 @@ public class PurpurWorldConfig { } pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth); pandaBreedingTicks = getInt("mobs.panda.breeding-delay-ticks", pandaBreedingTicks); + pandaTakeDamageFromWater = getBoolean("mobs.panda.takes-damage-from-water", pandaTakeDamageFromWater); } public double parrotMaxHealth = 6.0D; + public boolean parrotTakeDamageFromWater = false; private void parrotSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.parrot.attributes.max-health", parrotMaxHealth); @@ -1100,6 +1171,7 @@ public class PurpurWorldConfig { set("mobs.parrot.attributes.max_health", oldValue); } parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth); + parrotTakeDamageFromWater = getBoolean("mobs.parrot.takes-damage-from-water", parrotTakeDamageFromWater); } public String phantomMaxHealth = "20.0"; @@ -1116,6 +1188,7 @@ public class PurpurWorldConfig { public boolean phantomIgnorePlayersWithTorch = false; public boolean phantomBurnInDaylight = true; public boolean phantomFlamesOnSwoop = false; + public boolean phantomTakeDamageFromWater = false; private void phantomSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.phantom.attributes.max-health", Double.parseDouble(phantomMaxHealth)); @@ -1140,11 +1213,13 @@ public class PurpurWorldConfig { phantomBurnInDaylight = getBoolean("mobs.phantom.burn-in-daylight", phantomBurnInDaylight); phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch); phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop); + phantomTakeDamageFromWater = getBoolean("mobs.phantom.takes-damage-from-water", phantomTakeDamageFromWater); } public double pigMaxHealth = 10.0D; public boolean pigGiveSaddleBack = false; public int pigBreedingTicks = 6000; + public boolean pigTakeDamageFromWater = false; private void pigSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.pig.attributes.max-health", pigMaxHealth); @@ -1154,10 +1229,12 @@ public class PurpurWorldConfig { pigMaxHealth = getDouble("mobs.pig.attributes.max_health", pigMaxHealth); pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); pigBreedingTicks = getInt("mobs.pig.breeding-delay-ticks", pigBreedingTicks); + pigTakeDamageFromWater = getBoolean("mobs.pig.takes-damage-from-water", pigTakeDamageFromWater); } public double piglinMaxHealth = 16.0D; public boolean piglinBypassMobGriefing = false; + public boolean piglinTakeDamageFromWater = false; private void piglinSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.piglin.attributes.max-health", piglinMaxHealth); @@ -1166,9 +1243,11 @@ public class PurpurWorldConfig { } piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth); piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); + piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater); } public double piglinBruteMaxHealth = 50.0D; + public boolean piglinBruteTakeDamageFromWater = false; private void piglinBruteSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.piglin_brute.attributes.max-health", piglinBruteMaxHealth); @@ -1176,10 +1255,12 @@ public class PurpurWorldConfig { set("mobs.piglin_brute.attributes.max_health", oldValue); } piglinBruteMaxHealth = getDouble("mobs.piglin_brute.attributes.max_health", piglinBruteMaxHealth); + piglinBruteTakeDamageFromWater = getBoolean("mobs.piglin_brute.takes-damage-from-water", piglinBruteTakeDamageFromWater); } public double pillagerMaxHealth = 24.0D; public boolean pillagerBypassMobGriefing = false; + public boolean pillagerTakeDamageFromWater = false; private void pillagerSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.pillager.attributes.max-health", pillagerMaxHealth); @@ -1188,12 +1269,14 @@ public class PurpurWorldConfig { } pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); pillagerBypassMobGriefing = getBoolean("mobs.pillager.bypass-mob-griefing", pillagerBypassMobGriefing); + pillagerTakeDamageFromWater = getBoolean("mobs.pillager.takes-damage-from-water", pillagerTakeDamageFromWater); } public double polarBearMaxHealth = 30.0D; public String polarBearBreedableItemString = ""; public Item polarBearBreedableItem = null; public int polarBearBreedingTicks = 6000; + public boolean polarBearTakeDamageFromWater = false; private void polarBearSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.polar_bear.attributes.max-health", polarBearMaxHealth); @@ -1205,9 +1288,11 @@ public class PurpurWorldConfig { Item item = BuiltInRegistries.ITEM.get(new ResourceLocation(polarBearBreedableItemString)); if (item != Items.AIR) polarBearBreedableItem = item; polarBearBreedingTicks = getInt("mobs.polar_bear.breeding-delay-ticks", polarBearBreedingTicks); + polarBearTakeDamageFromWater = getBoolean("mobs.polar_bear.takes-damage-from-water", polarBearTakeDamageFromWater); } public double pufferfishMaxHealth = 3.0D; + public boolean pufferfishTakeDamageFromWater = false; private void pufferfishSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.pufferfish.attributes.max-health", pufferfishMaxHealth); @@ -1215,6 +1300,7 @@ public class PurpurWorldConfig { set("mobs.pufferfish.attributes.max_health", oldValue); } pufferfishMaxHealth = getDouble("mobs.pufferfish.attributes.max_health", pufferfishMaxHealth); + pufferfishTakeDamageFromWater = getBoolean("mobs.pufferfish.takes-damage-from-water", pufferfishTakeDamageFromWater); } public double rabbitMaxHealth = 3.0D; @@ -1222,6 +1308,7 @@ public class PurpurWorldConfig { public double rabbitNaturalKiller = 0.0D; public int rabbitBreedingTicks = 6000; public boolean rabbitBypassMobGriefing = false; + public boolean rabbitTakeDamageFromWater = false; private void rabbitSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.rabbit.attributes.max-health", rabbitMaxHealth); @@ -1233,10 +1320,12 @@ public class PurpurWorldConfig { rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller); rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks); rabbitBypassMobGriefing = getBoolean("mobs.rabbit.bypass-mob-griefing", rabbitBypassMobGriefing); + rabbitTakeDamageFromWater = getBoolean("mobs.rabbit.takes-damage-from-water", rabbitTakeDamageFromWater); } public double ravagerMaxHealth = 100.0D; public boolean ravagerBypassMobGriefing = false; + public boolean ravagerTakeDamageFromWater = false; private void ravagerSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.ravager.attributes.max-health", ravagerMaxHealth); @@ -1245,9 +1334,11 @@ public class PurpurWorldConfig { } ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth); ravagerBypassMobGriefing = getBoolean("mobs.ravager.bypass-mob-griefing", ravagerBypassMobGriefing); + ravagerTakeDamageFromWater = getBoolean("mobs.ravager.takes-damage-from-water", ravagerTakeDamageFromWater); } public double salmonMaxHealth = 3.0D; + public boolean salmonTakeDamageFromWater = false; private void salmonSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.salmon.attributes.max-health", salmonMaxHealth); @@ -1255,11 +1346,13 @@ public class PurpurWorldConfig { set("mobs.salmon.attributes.max_health", oldValue); } salmonMaxHealth = getDouble("mobs.salmon.attributes.max_health", salmonMaxHealth); + salmonTakeDamageFromWater = getBoolean("mobs.salmon.takes-damage-from-water", salmonTakeDamageFromWater); } public double sheepMaxHealth = 8.0D; public int sheepBreedingTicks = 6000; public boolean sheepBypassMobGriefing = false; + public boolean sheepTakeDamageFromWater = false; private void sheepSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.sheep.attributes.max-health", sheepMaxHealth); @@ -1269,9 +1362,11 @@ public class PurpurWorldConfig { sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing); + sheepTakeDamageFromWater = getBoolean("mobs.sheep.takes-damage-from-water", sheepTakeDamageFromWater); } public double shulkerMaxHealth = 30.0D; + public boolean shulkerTakeDamageFromWater = false; private void shulkerSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.shulker.attributes.max-health", shulkerMaxHealth); @@ -1279,10 +1374,12 @@ public class PurpurWorldConfig { set("mobs.shulker.attributes.max_health", oldValue); } shulkerMaxHealth = getDouble("mobs.shulker.attributes.max_health", shulkerMaxHealth); + shulkerTakeDamageFromWater = getBoolean("mobs.shulker.takes-damage-from-water", shulkerTakeDamageFromWater); } public double silverfishMaxHealth = 8.0D; public boolean silverfishBypassMobGriefing = false; + public boolean silverfishTakeDamageFromWater = false; private void silverfishSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.silverfish.attributes.max-health", silverfishMaxHealth); @@ -1291,9 +1388,11 @@ public class PurpurWorldConfig { } silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max_health", silverfishMaxHealth); silverfishBypassMobGriefing = getBoolean("mobs.silverfish.bypass-mob-griefing", silverfishBypassMobGriefing); + silverfishTakeDamageFromWater = getBoolean("mobs.silverfish.takes-damage-from-water", silverfishTakeDamageFromWater); } public double skeletonMaxHealth = 20.0D; + public boolean skeletonTakeDamageFromWater = false; private void skeletonSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.skeleton.attributes.max-health", skeletonMaxHealth); @@ -1301,6 +1400,7 @@ public class PurpurWorldConfig { set("mobs.skeleton.attributes.max_health", oldValue); } skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); + skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); } public double skeletonHorseMaxHealthMin = 15.0D; @@ -1309,6 +1409,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() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.skeleton_horse.attributes.max-health", skeletonHorseMaxHealthMin); @@ -1322,12 +1423,14 @@ 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); + skeletonHorseTakeDamageFromWater = getBoolean("mobs.skeleton_horse.takes-damage-from-water", skeletonHorseTakeDamageFromWater); } public String slimeMaxHealth = "size * size"; public String slimeAttackDamage = "size"; public Map slimeMaxHealthCache = new HashMap<>(); public Map slimeAttackDamageCache = new HashMap<>(); + public boolean slimeTakeDamageFromWater = false; private void slimeSettings() { if (PurpurConfig.version < 10) { String oldValue = getString("mobs.slime.attributes.max-health", slimeMaxHealth); @@ -1338,6 +1441,7 @@ public class PurpurWorldConfig { slimeAttackDamage = getString("mobs.slime.attributes.attack_damage", slimeAttackDamage); slimeMaxHealthCache.clear(); slimeAttackDamageCache.clear(); + slimeTakeDamageFromWater = getBoolean("mobs.slime.takes-damage-from-water", slimeTakeDamageFromWater); } public boolean snowGolemLeaveTrailWhenRidden = false; @@ -1349,6 +1453,7 @@ public class PurpurWorldConfig { public float snowGolemSnowBallModifier = 10.0F; public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; + public boolean snowGolemTakeDamageFromWater = true; private void snowGolemSettings() { snowGolemLeaveTrailWhenRidden = getBoolean("mobs.snow_golem.leave-trail-when-ridden", snowGolemLeaveTrailWhenRidden); if (PurpurConfig.version < 10) { @@ -1364,6 +1469,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); + snowGolemTakeDamageFromWater = getBoolean("mobs.snow_golem.takes-damage-from-water", snowGolemTakeDamageFromWater); } public double snifferMaxHealth = 14.0D; @@ -1377,6 +1483,7 @@ public class PurpurWorldConfig { public boolean squidImmuneToEAR = true; public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; + public boolean squidTakeDamageFromWater = false; private void squidSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.squid.attributes.max-health", squidMaxHealth); @@ -1387,9 +1494,11 @@ 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); + squidTakeDamageFromWater = getBoolean("mobs.squid.takes-damage-from-water", squidTakeDamageFromWater); } public double spiderMaxHealth = 16.0D; + public boolean spiderTakeDamageFromWater = false; private void spiderSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.spider.attributes.max-health", spiderMaxHealth); @@ -1397,9 +1506,11 @@ public class PurpurWorldConfig { set("mobs.spider.attributes.max_health", oldValue); } spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth); + spiderTakeDamageFromWater = getBoolean("mobs.spider.takes-damage-from-water", spiderTakeDamageFromWater); } public double strayMaxHealth = 20.0D; + public boolean strayTakeDamageFromWater = false; private void straySettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.stray.attributes.max-health", strayMaxHealth); @@ -1407,11 +1518,13 @@ public class PurpurWorldConfig { set("mobs.stray.attributes.max_health", oldValue); } strayMaxHealth = getDouble("mobs.stray.attributes.max_health", strayMaxHealth); + strayTakeDamageFromWater = getBoolean("mobs.stray.takes-damage-from-water", strayTakeDamageFromWater); } public double striderMaxHealth = 20.0D; public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; + public boolean striderTakeDamageFromWater = true; private void striderSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.strider.attributes.max-health", striderMaxHealth); @@ -1421,6 +1534,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); + striderTakeDamageFromWater = getBoolean("mobs.strider.takes-damage-from-water", striderTakeDamageFromWater); } public double traderLlamaMaxHealthMin = 15.0D; @@ -1430,6 +1544,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMin = 0.175D; public double traderLlamaMovementSpeedMax = 0.175D; public int traderLlamaBreedingTicks = 6000; + public boolean traderLlamaTakeDamageFromWater = false; private void traderLlamaSettings() { if (PurpurConfig.version < 10) { double oldMin = getDouble("mobs.trader_llama.attributes.max-health.min", traderLlamaMaxHealthMin); @@ -1445,9 +1560,11 @@ 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); + traderLlamaTakeDamageFromWater = getBoolean("mobs.trader_llama.takes-damage-from-water", traderLlamaTakeDamageFromWater); } public double tropicalFishMaxHealth = 3.0D; + public boolean tropicalFishTakeDamageFromWater = false; private void tropicalFishSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.tropical_fish.attributes.max-health", tropicalFishMaxHealth); @@ -1455,10 +1572,12 @@ public class PurpurWorldConfig { set("mobs.tropical_fish.attributes.max_health", oldValue); } tropicalFishMaxHealth = getDouble("mobs.tropical_fish.attributes.max_health", tropicalFishMaxHealth); + tropicalFishTakeDamageFromWater = getBoolean("mobs.tropical_fish.takes-damage-from-water", tropicalFishTakeDamageFromWater); } public double turtleMaxHealth = 30.0D; public int turtleBreedingTicks = 6000; + public boolean turtleTakeDamageFromWater = false; private void turtleSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.turtle.attributes.max-health", turtleMaxHealth); @@ -1467,10 +1586,12 @@ 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); } public double vexMaxY = 320D; public double vexMaxHealth = 14.0D; + public boolean vexTakeDamageFromWater = false; private void vexSettings() { vexMaxY = getDouble("mobs.vex.ridable-max-y", vexMaxY); if (PurpurConfig.version < 10) { @@ -1479,6 +1600,7 @@ public class PurpurWorldConfig { set("mobs.vex.attributes.max_health", oldValue); } vexMaxHealth = getDouble("mobs.vex.attributes.max_health", vexMaxHealth); + vexTakeDamageFromWater = getBoolean("mobs.vex.takes-damage-from-water", vexTakeDamageFromWater); } public double villagerMaxHealth = 20.0D; @@ -1487,6 +1609,7 @@ public class PurpurWorldConfig { public boolean villagerCanBreed = true; public int villagerBreedingTicks = 6000; public boolean villagerBypassMobGriefing = false; + public boolean villagerTakeDamageFromWater = false; private void villagerSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.villager.attributes.max-health", villagerMaxHealth); @@ -1499,10 +1622,12 @@ public class PurpurWorldConfig { villagerCanBreed = getBoolean("mobs.villager.can-breed", villagerCanBreed); villagerBreedingTicks = getInt("mobs.villager.breeding-delay-ticks", villagerBreedingTicks); villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); + villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); } public double vindicatorMaxHealth = 24.0D; public double vindicatorJohnnySpawnChance = 0D; + public boolean vindicatorTakeDamageFromWater = false; private void vindicatorSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.vindicator.attributes.max-health", vindicatorMaxHealth); @@ -1511,11 +1636,13 @@ 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); } public double wanderingTraderMaxHealth = 20.0D; public boolean wanderingTraderFollowEmeraldBlock = false; public boolean wanderingTraderCanBeLeashed = false; + public boolean wanderingTraderTakeDamageFromWater = false; private void wanderingTraderSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.wandering_trader.attributes.max-health", wanderingTraderMaxHealth); @@ -1525,9 +1652,11 @@ 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); + wanderingTraderTakeDamageFromWater = getBoolean("mobs.wandering_trader.takes-damage-from-water", wanderingTraderTakeDamageFromWater); } public double witchMaxHealth = 26.0D; + public boolean witchTakeDamageFromWater = false; private void witchSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.witch.attributes.max-health", witchMaxHealth); @@ -1535,12 +1664,14 @@ public class PurpurWorldConfig { set("mobs.witch.attributes.max_health", oldValue); } witchMaxHealth = getDouble("mobs.witch.attributes.max_health", witchMaxHealth); + witchTakeDamageFromWater = getBoolean("mobs.witch.takes-damage-from-water", witchTakeDamageFromWater); } public double witherMaxHealth = 300.0D; public float witherHealthRegenAmount = 1.0f; public int witherHealthRegenDelay = 20; public boolean witherBypassMobGriefing = false; + public boolean witherTakeDamageFromWater = false; private void witherSettings() { if (PurpurConfig.version < 8) { double oldValue = getDouble("mobs.wither.max-health", witherMaxHealth); @@ -1555,9 +1686,11 @@ 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); + witherTakeDamageFromWater = getBoolean("mobs.wither.takes-damage-from-water", witherTakeDamageFromWater); } public double witherSkeletonMaxHealth = 20.0D; + public boolean witherSkeletonTakeDamageFromWater = false; private void witherSkeletonSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.wither_skeleton.attributes.max-health", witherSkeletonMaxHealth); @@ -1565,6 +1698,7 @@ public class PurpurWorldConfig { set("mobs.wither_skeleton.attributes.max_health", oldValue); } witherSkeletonMaxHealth = getDouble("mobs.wither_skeleton.attributes.max_health", witherSkeletonMaxHealth); + witherSkeletonTakeDamageFromWater = getBoolean("mobs.wither_skeleton.takes-damage-from-water", witherSkeletonTakeDamageFromWater); } public double wolfMaxHealth = 8.0D; @@ -1572,6 +1706,7 @@ public class PurpurWorldConfig { public boolean wolfMilkCuresRabies = true; public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; + public boolean wolfTakeDamageFromWater = false; private void wolfSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.wolf.attributes.max-health", wolfMaxHealth); @@ -1587,9 +1722,11 @@ 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); + wolfTakeDamageFromWater = getBoolean("mobs.wolf.takes-damage-from-water", wolfTakeDamageFromWater); } public double zoglinMaxHealth = 40.0D; + public boolean zoglinTakeDamageFromWater = false; private void zoglinSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.zoglin.attributes.max-health", zoglinMaxHealth); @@ -1597,6 +1734,7 @@ public class PurpurWorldConfig { set("mobs.zoglin.attributes.max_health", oldValue); } zoglinMaxHealth = getDouble("mobs.zoglin.attributes.max_health", zoglinMaxHealth); + zoglinTakeDamageFromWater = getBoolean("mobs.zoglin.takes-damage-from-water", zoglinTakeDamageFromWater); } public double zombieMaxHealth = 20.0D; @@ -1606,6 +1744,7 @@ public class PurpurWorldConfig { public boolean zombieJockeyTryExistingChickens = true; public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; + public boolean zombieTakeDamageFromWater = false; private void zombieSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.zombie.attributes.max-health", zombieMaxHealth); @@ -1619,6 +1758,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 double zombieHorseMaxHealthMin = 15.0D; @@ -1628,6 +1768,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() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.zombie_horse.attributes.max-health", zombieHorseMaxHealthMin); @@ -1642,6 +1783,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); + zombieHorseTakeDamageFromWater = getBoolean("mobs.zombie_horse.takes-damage-from-water", zombieHorseTakeDamageFromWater); } public double zombieVillagerMaxHealth = 20.0D; @@ -1649,6 +1791,7 @@ public class PurpurWorldConfig { public boolean zombieVillagerJockeyOnlyBaby = true; public double zombieVillagerJockeyChance = 0.05D; public boolean zombieVillagerJockeyTryExistingChickens = true; + public boolean zombieVillagerTakeDamageFromWater = false; private void zombieVillagerSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.zombie_villager.attributes.max-health", zombieVillagerMaxHealth); @@ -1660,6 +1803,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); + zombieVillagerTakeDamageFromWater = getBoolean("mobs.zombie_villager.takes-damage-from-water", zombieVillagerTakeDamageFromWater); } public double zombifiedPiglinMaxHealth = 20.0D; @@ -1668,6 +1812,7 @@ public class PurpurWorldConfig { public double zombifiedPiglinJockeyChance = 0.05D; public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; + public boolean zombifiedPiglinTakeDamageFromWater = false; private void zombifiedPiglinSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.zombified_piglin.attributes.max-health", zombifiedPiglinMaxHealth); @@ -1680,5 +1825,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); + zombifiedPiglinTakeDamageFromWater = getBoolean("mobs.zombified_piglin.takes-damage-from-water", zombifiedPiglinTakeDamageFromWater); } }