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/net/minecraft/world/entity/GlowSquid.java b/net/minecraft/world/entity/GlowSquid.java index 898b1e01026ec1f44cfe60e9f18a997c86e30594..e717c063c8f9623b8c4b4ea3843d05fd79af3653 100644 --- a/net/minecraft/world/entity/GlowSquid.java +++ b/net/minecraft/world/entity/GlowSquid.java @@ -52,6 +52,13 @@ public class GlowSquid extends Squid { } // Purpur end - Configurable entity base attributes + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.glowSquidTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Override protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/net/minecraft/world/entity/ambient/Bat.java b/net/minecraft/world/entity/ambient/Bat.java index e158fdc79c2c8f27203d6f229c1ac906394e5f96..2345ca8443693dafaae23a991d37e25b46a46da0 100644 --- a/net/minecraft/world/entity/ambient/Bat.java +++ b/net/minecraft/world/entity/ambient/Bat.java @@ -109,6 +109,13 @@ public class Bat extends AmbientCreature { } // Purpur end - Configurable entity base attributes + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.batTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Override public boolean isFlapping() { return !this.isResting() && this.tickCount % 10.0F == 0.0F; diff --git a/net/minecraft/world/entity/animal/Bee.java b/net/minecraft/world/entity/animal/Bee.java index 62fbaed0f81b900730ab22b969ffd48d31a268ce..5c8b88e8dca604d053c59106e64bfcf32491ec4f 100644 --- a/net/minecraft/world/entity/animal/Bee.java +++ b/net/minecraft/world/entity/animal/Bee.java @@ -177,7 +177,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { // Paper end - Fix MC-167279 this.lookControl = new Bee.BeeLookControl(this); this.setPathfindingMalus(PathType.DANGER_FIRE, -1.0F); - this.setPathfindingMalus(PathType.WATER, -1.0F); + if (isSensitiveToWater()) this.setPathfindingMalus(PathType.WATER, -1.0F); // Purpur - Toggle for water sensitive mob damage this.setPathfindingMalus(PathType.WATER_BORDER, 16.0F); this.setPathfindingMalus(PathType.COCOA, -1.0F); this.setPathfindingMalus(PathType.FENCE, -1.0F); @@ -486,6 +486,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { } // Purpur end - Make entity breeding times configurable + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.beeTakeDamageFromWater; + } + @Override public int getRemainingPersistentAngerTime() { return this.entityData.get(DATA_REMAINING_ANGER_TIME); diff --git a/net/minecraft/world/entity/animal/Cat.java b/net/minecraft/world/entity/animal/Cat.java index 584568cef949cee24aa7850d2ff99d47cd089a6e..b41ca04043e65f107edaebc49d398650898e35fb 100644 --- a/net/minecraft/world/entity/animal/Cat.java +++ b/net/minecraft/world/entity/animal/Cat.java @@ -133,6 +133,13 @@ public class Cat extends TamableAnimal implements VariantHolder itemStack.is(ItemTags.CAT_FOOD), true); diff --git a/net/minecraft/world/entity/animal/Chicken.java b/net/minecraft/world/entity/animal/Chicken.java index 39ad1729ef03fc35a6365ee215be214eccfd959a..2364596156c21e82879f5bf4fd873b9d90b1c308 100644 --- a/net/minecraft/world/entity/animal/Chicken.java +++ b/net/minecraft/world/entity/animal/Chicken.java @@ -88,6 +88,13 @@ public class Chicken extends Animal { } // Purpur end - Make entity breeding times configurable + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.chickenTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Override protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/animal/Cod.java b/net/minecraft/world/entity/animal/Cod.java index 434e1fabf2e360a8f5f4eefed96e3883aa786d10..ac7259cfc8428131f90956d7f76f2227049ffae3 100644 --- a/net/minecraft/world/entity/animal/Cod.java +++ b/net/minecraft/world/entity/animal/Cod.java @@ -32,6 +32,13 @@ public class Cod extends AbstractSchoolingFish { } // Purpur end - Configurable entity base attributes + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.codTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Override public ItemStack getBucketItemStack() { return new ItemStack(Items.COD_BUCKET); diff --git a/net/minecraft/world/entity/animal/Cow.java b/net/minecraft/world/entity/animal/Cow.java index e4965300eb41512d03a0b111422c98627cf29a54..a8c76fcbbaa4afd2d0bd568874995b91d8d67c03 100644 --- a/net/minecraft/world/entity/animal/Cow.java +++ b/net/minecraft/world/entity/animal/Cow.java @@ -70,6 +70,13 @@ public class Cow extends Animal { } // Purpur end - Make entity breeding times configurable + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.cowTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Override protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/animal/Dolphin.java b/net/minecraft/world/entity/animal/Dolphin.java index 2dc6af7adcf3b62f02725bbeca47fe163f360d04..febe96708feb874d8a9d19b9509731e83476649b 100644 --- a/net/minecraft/world/entity/animal/Dolphin.java +++ b/net/minecraft/world/entity/animal/Dolphin.java @@ -155,6 +155,13 @@ public class Dolphin extends AgeableWaterCreature { } // Purpur end - Configurable entity base attributes + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.dolphinTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Nullable @Override public SpawnGroupData finalizeSpawn( diff --git a/net/minecraft/world/entity/animal/Fox.java b/net/minecraft/world/entity/animal/Fox.java index 3d94d5c9ecab0fe7332daf4cdac879385159eaa1..22a70c6af965114e272bb56cb217f975a3cd1bd4 100644 --- a/net/minecraft/world/entity/animal/Fox.java +++ b/net/minecraft/world/entity/animal/Fox.java @@ -182,6 +182,13 @@ public class Fox extends Animal implements VariantHolder { } // Purpur end - Make entity breeding times configurable + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.foxTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Override protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/IronGolem.java b/net/minecraft/world/entity/animal/IronGolem.java index d195e8658fd5a4045c95ff1e921bfeeb4dfbecf5..0c4edfaa16331d35c6c2383f690545cb3d2a0952 100644 --- a/net/minecraft/world/entity/animal/IronGolem.java +++ b/net/minecraft/world/entity/animal/IronGolem.java @@ -86,6 +86,13 @@ public class IronGolem extends AbstractGolem implements NeutralMob { } // Purpur end - Configurable entity base attributes + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.ironGolemTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Override protected void registerGoals() { if (level().purpurConfig.ironGolemCanSwim) this.goalSelector.addGoal(0, new net.minecraft.world.entity.ai.goal.FloatGoal(this)); // Purpur - Ridables diff --git a/net/minecraft/world/entity/animal/MushroomCow.java b/net/minecraft/world/entity/animal/MushroomCow.java index a64b609bf5ce38a252bfa1bcff869f88e14389b5..5e9795f447e88a42909730d383eaa36acfaf18f5 100644 --- a/net/minecraft/world/entity/animal/MushroomCow.java +++ b/net/minecraft/world/entity/animal/MushroomCow.java @@ -86,6 +86,13 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder { } // Purpur end - Make entity breeding times configurable + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.rabbitTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Override public void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/animal/Salmon.java b/net/minecraft/world/entity/animal/Salmon.java index 93eb3cc3605f694337c1604e2db63fed04693617..8bd4b2b29438bff65ed00a42bbc9639111af181f 100644 --- a/net/minecraft/world/entity/animal/Salmon.java +++ b/net/minecraft/world/entity/animal/Salmon.java @@ -54,6 +54,13 @@ public class Salmon extends AbstractSchoolingFish implements VariantHolder, B } // Purpur end - Make entity breeding times configurable + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.axolotlTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Override public float getWalkTargetValue(BlockPos pos, LevelReader level) { return 0.0F; diff --git a/net/minecraft/world/entity/animal/goat/Goat.java b/net/minecraft/world/entity/animal/goat/Goat.java index 16fe9367466372eb7cd0ecf24ba5b7cbc64a820c..b95570519301bb9e260ce3c20f3231c79ff22fac 100644 --- a/net/minecraft/world/entity/animal/goat/Goat.java +++ b/net/minecraft/world/entity/animal/goat/Goat.java @@ -135,6 +135,13 @@ public class Goat extends Animal { } // Purpur end - Make entity breeding times configurable + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.goatTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Override protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/net/minecraft/world/entity/animal/horse/Donkey.java b/net/minecraft/world/entity/animal/horse/Donkey.java index b977597785df5665176ab2f330633ec61b7c9feb..1db6ccdc6c83c704aa84a46ee2751a17125bf457 100644 --- a/net/minecraft/world/entity/animal/horse/Donkey.java +++ b/net/minecraft/world/entity/animal/horse/Donkey.java @@ -47,6 +47,13 @@ public class Donkey extends AbstractChestedHorse { } // Purpur end - Make entity breeding times configurable + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.donkeyTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Override protected SoundEvent getAmbientSound() { return SoundEvents.DONKEY_AMBIENT; diff --git a/net/minecraft/world/entity/animal/horse/Horse.java b/net/minecraft/world/entity/animal/horse/Horse.java index 0339ab08b3029a9ffc102c5b865e411aca2a863c..f257d549570918381925cef98734fc0aa605f8f2 100644 --- a/net/minecraft/world/entity/animal/horse/Horse.java +++ b/net/minecraft/world/entity/animal/horse/Horse.java @@ -74,6 +74,13 @@ public class Horse extends AbstractHorse implements VariantHolder { } // Purpur end - Make entity breeding times configurable + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.horseTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Override protected void randomizeAttributes(RandomSource random) { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(generateMaxHealth(random::nextInt)); diff --git a/net/minecraft/world/entity/animal/horse/Llama.java b/net/minecraft/world/entity/animal/horse/Llama.java index 67413d7c1cbef72a9068b33ea69125315aa35565..80e9958d2e89986130aa653eceaee189817f5087 100644 --- a/net/minecraft/world/entity/animal/horse/Llama.java +++ b/net/minecraft/world/entity/animal/horse/Llama.java @@ -148,6 +148,13 @@ public class Llama extends AbstractChestedHorse implements VariantHolder entityType, Level level) { super(entityType, level); this.moveControl = new org.purpurmc.purpur.controller.FlyingWithSpacebarMoveControllerWASD(this, 0.3F); // Purpur - Ridables - this.setPathfindingMalus(PathType.WATER, -1.0F); + if (isSensitiveToWater()) this.setPathfindingMalus(PathType.WATER, -1.0F); // Purpur - Toggle for water sensitive mob damage this.setPathfindingMalus(PathType.LAVA, 8.0F); this.setPathfindingMalus(PathType.DANGER_FIRE, 0.0F); this.setPathfindingMalus(PathType.DAMAGE_FIRE, 0.0F); @@ -157,7 +157,7 @@ public class Blaze extends Monster { @Override public boolean isSensitiveToWater() { - return true; + return this.level().purpurConfig.blazeTakeDamageFromWater; // Purpur - Toggle for water sensitive mob damage } @Override diff --git a/net/minecraft/world/entity/monster/CaveSpider.java b/net/minecraft/world/entity/monster/CaveSpider.java index 64eecd8d1acd318743800c1daa77cd97097a0f7c..420fe0d01d0b173a6a541f77e1aaca3f3bb565e7 100644 --- a/net/minecraft/world/entity/monster/CaveSpider.java +++ b/net/minecraft/world/entity/monster/CaveSpider.java @@ -51,6 +51,13 @@ public class CaveSpider extends Spider { } // Purpur end - Configurable entity base attributes + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.caveSpiderTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Override public boolean doHurtTarget(ServerLevel level, Entity source) { if (super.doHurtTarget(level, source)) { diff --git a/net/minecraft/world/entity/monster/Creeper.java b/net/minecraft/world/entity/monster/Creeper.java index 6a49156b09c5518085d38cafde9b41a732b560b0..2a5999c2470fc59253c5552fe8022e4f630a0a82 100644 --- a/net/minecraft/world/entity/monster/Creeper.java +++ b/net/minecraft/world/entity/monster/Creeper.java @@ -256,6 +256,13 @@ public class Creeper extends Monster { } // Purpur end - Special mobs naturally spawn + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.creeperTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Override protected SoundEvent getHurtSound(DamageSource damageSource) { return SoundEvents.CREEPER_HURT; diff --git a/net/minecraft/world/entity/monster/Drowned.java b/net/minecraft/world/entity/monster/Drowned.java index 173c0f13202e1ab3491ffde72ece95e2b4a46fd6..ce95f160283faa67e2a35239a0049717ff47f44b 100644 --- a/net/minecraft/world/entity/monster/Drowned.java +++ b/net/minecraft/world/entity/monster/Drowned.java @@ -122,6 +122,13 @@ public class Drowned extends Zombie implements RangedAttackMob { } // Purpur end - Configurable jockey options + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.drownedTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Override protected void addBehaviourGoals() { this.goalSelector.addGoal(1, new Drowned.DrownedGoToWaterGoal(this, 1.0)); diff --git a/net/minecraft/world/entity/monster/ElderGuardian.java b/net/minecraft/world/entity/monster/ElderGuardian.java index 148ae4bca77874545a2a05fb7f29f9ac284feff6..2b1d33f4938b978c5b04ede7562bdecb5fbd2245 100644 --- a/net/minecraft/world/entity/monster/ElderGuardian.java +++ b/net/minecraft/world/entity/monster/ElderGuardian.java @@ -51,6 +51,13 @@ public class ElderGuardian extends Guardian { } // Purpur end - Configurable entity base attributes + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.elderGuardianTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + public static AttributeSupplier.Builder createAttributes() { return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.3F).add(Attributes.ATTACK_DAMAGE, 8.0).add(Attributes.MAX_HEALTH, 80.0); } diff --git a/net/minecraft/world/entity/monster/EnderMan.java b/net/minecraft/world/entity/monster/EnderMan.java index 7434c7bad021e474bf0ecbd1cb28a38b92f3586e..b76d47dfbc6a81497fc6d5dcc0be2297a0ad6d06 100644 --- a/net/minecraft/world/entity/monster/EnderMan.java +++ b/net/minecraft/world/entity/monster/EnderMan.java @@ -87,7 +87,7 @@ public class EnderMan extends Monster implements NeutralMob { public EnderMan(EntityType entityType, Level level) { super(entityType, level); - this.setPathfindingMalus(PathType.WATER, -1.0F); + if (isSensitiveToWater()) this.setPathfindingMalus(PathType.WATER, -1.0F); // Purpur - Toggle for water sensitive mob damage } // Purpur start - Ridables @@ -294,7 +294,7 @@ public class EnderMan extends Monster implements NeutralMob { @Override public boolean isSensitiveToWater() { - return true; + return this.level().purpurConfig.endermanTakeDamageFromWater; // Purpur - Toggle for water sensitive mob damage } @Override diff --git a/net/minecraft/world/entity/monster/Endermite.java b/net/minecraft/world/entity/monster/Endermite.java index 2ea45eba13d0b0ea2d3c1d1a3666d6e2e027a3ef..38e3b3ed2c003fe7bbb476f7bf9a882ea2de792a 100644 --- a/net/minecraft/world/entity/monster/Endermite.java +++ b/net/minecraft/world/entity/monster/Endermite.java @@ -70,6 +70,13 @@ public class Endermite extends Monster { } // Purpur end - Configurable entity base attributes + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.endermiteTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Override protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/monster/Evoker.java b/net/minecraft/world/entity/monster/Evoker.java index 91574baf7ca095eae909e8e7225ad500bde15af2..61ed6606948cc5f8af543eb9ae05f9aeb4e73b89 100644 --- a/net/minecraft/world/entity/monster/Evoker.java +++ b/net/minecraft/world/entity/monster/Evoker.java @@ -75,6 +75,13 @@ public class Evoker extends SpellcasterIllager { } // Purpur end - Configurable entity base attributes + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.evokerTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Override protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/Ghast.java b/net/minecraft/world/entity/monster/Ghast.java index c5987f50b343ded580b3d3f264498d3893433f92..68debfa8c6d0fc3ff536d2b4d89c131fd6aca935 100644 --- a/net/minecraft/world/entity/monster/Ghast.java +++ b/net/minecraft/world/entity/monster/Ghast.java @@ -84,6 +84,13 @@ public class Ghast extends FlyingMob implements Enemy { } // Purpur end - Configurable entity base attributes + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.ghastTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Override protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables diff --git a/net/minecraft/world/entity/monster/Giant.java b/net/minecraft/world/entity/monster/Giant.java index 73da18c4b54e250c434fd75971ef0a8f7c8cf6a3..009b8a8b1b9aabc0aef1c12a0c0f65f9ccfcd306 100644 --- a/net/minecraft/world/entity/monster/Giant.java +++ b/net/minecraft/world/entity/monster/Giant.java @@ -62,6 +62,13 @@ public class Giant extends Monster { } // Purpur end - Configurable entity base attributes + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.giantTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + public static AttributeSupplier.Builder createAttributes() { return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 100.0).add(Attributes.MOVEMENT_SPEED, 0.5).add(Attributes.ATTACK_DAMAGE, 50.0); } diff --git a/net/minecraft/world/entity/monster/Guardian.java b/net/minecraft/world/entity/monster/Guardian.java index 546a4fe6d038d04c0be500e76ff4aebb02c3681a..819679a224ffe33e03d8e6b429c8e31b67c769fa 100644 --- a/net/minecraft/world/entity/monster/Guardian.java +++ b/net/minecraft/world/entity/monster/Guardian.java @@ -98,6 +98,13 @@ public class Guardian extends Monster { } // Purpur end - Configurable entity base attributes + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.guardianTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Override protected void registerGoals() { MoveTowardsRestrictionGoal moveTowardsRestrictionGoal = new MoveTowardsRestrictionGoal(this, 1.0); diff --git a/net/minecraft/world/entity/monster/Husk.java b/net/minecraft/world/entity/monster/Husk.java index 7a8951f93e65c6df145e30d44b9d928dd0c39189..31eef2869945d9de565d627cac3fc1a5db380a2a 100644 --- a/net/minecraft/world/entity/monster/Husk.java +++ b/net/minecraft/world/entity/monster/Husk.java @@ -67,6 +67,13 @@ public class Husk extends Zombie { } // Purpur end - Configurable jockey options + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.huskTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + public static boolean checkHuskSpawnRules( EntityType entityType, ServerLevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/Illusioner.java b/net/minecraft/world/entity/monster/Illusioner.java index 1d1cf8748e3fba2e2963ad2fa153fbfe990f5087..ad661f2bf8957644605b52a469d6a7cf8e064398 100644 --- a/net/minecraft/world/entity/monster/Illusioner.java +++ b/net/minecraft/world/entity/monster/Illusioner.java @@ -84,6 +84,13 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob { } // Purpur end - Configurable entity base attributes + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.illusionerTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Override protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/MagmaCube.java b/net/minecraft/world/entity/monster/MagmaCube.java index 2c6b0fd46d9ed6a8d1ca7e90ebf596dd3f310f0e..bf26f5f6017c60d5991d5f6c87da2acbd95ef5bb 100644 --- a/net/minecraft/world/entity/monster/MagmaCube.java +++ b/net/minecraft/world/entity/monster/MagmaCube.java @@ -68,6 +68,13 @@ public class MagmaCube extends Slime { } // Purpur end - Configurable entity base attributes + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.magmaCubeTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + public static AttributeSupplier.Builder createAttributes() { return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, 0.2F); } diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java index 065a8bbee9d31a4f443660c706d04cea69f4bdc3..eda7ee331451bcb812d089929589027cd6b9681e 100644 --- a/net/minecraft/world/entity/monster/Phantom.java +++ b/net/minecraft/world/entity/monster/Phantom.java @@ -139,6 +139,13 @@ public class Phantom extends FlyingMob implements Enemy { } // Purpur end - Phantoms attracted to crystals and crystals shoot phantoms + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.phantomTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Override public boolean isFlapping() { return (this.getUniqueFlapTickOffset() + this.tickCount) % TICKS_PER_FLAP == 0; diff --git a/net/minecraft/world/entity/monster/Pillager.java b/net/minecraft/world/entity/monster/Pillager.java index 9586aa3f3eb61fb0c1224df9d0104da69d7fa6bb..869a1007de13f3f5d757968d0f84cbf43786c870 100644 --- a/net/minecraft/world/entity/monster/Pillager.java +++ b/net/minecraft/world/entity/monster/Pillager.java @@ -88,6 +88,13 @@ public class Pillager extends AbstractIllager implements CrossbowAttackMob, Inve } // Purpur end - Configurable entity base attributes + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.pillagerTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Override protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/Ravager.java b/net/minecraft/world/entity/monster/Ravager.java index e55dd03e881f622e9ca759dd1810a84af0e1861d..ceab9206ab64909ab5596b2ecfcbfc46af9a8b7d 100644 --- a/net/minecraft/world/entity/monster/Ravager.java +++ b/net/minecraft/world/entity/monster/Ravager.java @@ -97,6 +97,13 @@ public class Ravager extends Raider { } // Purpur end - Configurable entity base attributes + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.ravagerTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Override protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/Shulker.java b/net/minecraft/world/entity/monster/Shulker.java index 612d57abee28e702390b9cd746a49d84d9feedf7..a7db4a1c7b73ac631ffebe83297309a40ef2570b 100644 --- a/net/minecraft/world/entity/monster/Shulker.java +++ b/net/minecraft/world/entity/monster/Shulker.java @@ -113,6 +113,13 @@ public class Shulker extends AbstractGolem implements VariantHolder entityType, ServerLevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/Strider.java b/net/minecraft/world/entity/monster/Strider.java index f36e94437b4e21961532ac9ab91767617f9c3c32..d01bc46d77340b10b23d0c0d50bddc37657028c8 100644 --- a/net/minecraft/world/entity/monster/Strider.java +++ b/net/minecraft/world/entity/monster/Strider.java @@ -88,7 +88,7 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { public Strider(EntityType entityType, Level level) { super(entityType, level); this.blocksBuilding = true; - this.setPathfindingMalus(PathType.WATER, -1.0F); + if (isSensitiveToWater()) this.setPathfindingMalus(PathType.WATER, -1.0F); // Purpur - Toggle for water sensitive mob damage this.setPathfindingMalus(PathType.LAVA, 0.0F); this.setPathfindingMalus(PathType.DANGER_FIRE, 0.0F); this.setPathfindingMalus(PathType.DAMAGE_FIRE, 0.0F); @@ -403,7 +403,7 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { @Override public boolean isSensitiveToWater() { - return true; + return this.level().purpurConfig.striderTakeDamageFromWater; // Purpur - Toggle for water sensitive mob damage } @Override diff --git a/net/minecraft/world/entity/monster/Vex.java b/net/minecraft/world/entity/monster/Vex.java index 8356906b2c0707e21021bb05f9ca01a95682880a..ffdb200d9716104f8df91dbeef590b2264e587b8 100644 --- a/net/minecraft/world/entity/monster/Vex.java +++ b/net/minecraft/world/entity/monster/Vex.java @@ -110,6 +110,13 @@ public class Vex extends Monster implements TraceableEntity { } // Purpur end - Configurable entity base attributes + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.vexTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Override public boolean isFlapping() { return this.tickCount % TICKS_PER_FLAP == 0; diff --git a/net/minecraft/world/entity/monster/Vindicator.java b/net/minecraft/world/entity/monster/Vindicator.java index 0fc1b458101ba9d98d25c9637337caf0949bb893..5f68d73460adfac2ead57d168156a2784af979ae 100644 --- a/net/minecraft/world/entity/monster/Vindicator.java +++ b/net/minecraft/world/entity/monster/Vindicator.java @@ -80,6 +80,13 @@ public class Vindicator extends AbstractIllager { } // Purpur end - Configurable entity base attributes + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.vindicatorTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Override protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/Witch.java b/net/minecraft/world/entity/monster/Witch.java index ff8380246f6c6c805b222a91ac6a1eb0d130558d..96ba35f3530ab405a960c79955699666deb6b845 100644 --- a/net/minecraft/world/entity/monster/Witch.java +++ b/net/minecraft/world/entity/monster/Witch.java @@ -81,6 +81,13 @@ public class Witch extends Raider implements RangedAttackMob { } // Purpur end - Configurable entity base attributes + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.witchTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Override protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/WitherSkeleton.java b/net/minecraft/world/entity/monster/WitherSkeleton.java index 3342f2d92830049837636ff10b5e52f0d85fbd2c..a4dc9b7fbde19b08eb389dc42df21aa5df94e703 100644 --- a/net/minecraft/world/entity/monster/WitherSkeleton.java +++ b/net/minecraft/world/entity/monster/WitherSkeleton.java @@ -59,6 +59,13 @@ public class WitherSkeleton extends AbstractSkeleton { } // Purpur end - Configurable entity base attributes + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.witherSkeletonTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Override protected void registerGoals() { this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractPiglin.class, true)); diff --git a/net/minecraft/world/entity/monster/Zoglin.java b/net/minecraft/world/entity/monster/Zoglin.java index 132b38d717ac3c5acc64a5ec519f345ac57021d8..79a4a3f4e10e1f9c1a6100060a95636075fc8236 100644 --- a/net/minecraft/world/entity/monster/Zoglin.java +++ b/net/minecraft/world/entity/monster/Zoglin.java @@ -110,6 +110,13 @@ public class Zoglin extends Monster implements HoglinBase { } // Purpur end - Configurable entity base attributes + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.zoglinTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Override protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/net/minecraft/world/entity/monster/Zombie.java b/net/minecraft/world/entity/monster/Zombie.java index b600fc46ed96d46769b7b289997a6e3cd422417b..61767c8dc1872d7d87d0757da4d3664c4ebafa54 100644 --- a/net/minecraft/world/entity/monster/Zombie.java +++ b/net/minecraft/world/entity/monster/Zombie.java @@ -139,6 +139,13 @@ public class Zombie extends Monster { } // Purpur end - Configurable jockey options + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.zombieTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Override protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables diff --git a/net/minecraft/world/entity/monster/ZombieVillager.java b/net/minecraft/world/entity/monster/ZombieVillager.java index 54df75681a89df93f59a589189c7e96b4acc4c77..bfe3b1c01ae03392b64be401918010bbcd025efe 100644 --- a/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/net/minecraft/world/entity/monster/ZombieVillager.java @@ -124,6 +124,13 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { } // Purpur end - Configurable jockey options + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.zombieVillagerTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Override protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/net/minecraft/world/entity/monster/ZombifiedPiglin.java index 9603589e0501feee900cd21b04eb84b02bb45de2..09c991d8e344f11bc84dea453042ee35c39e580e 100644 --- a/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/net/minecraft/world/entity/monster/ZombifiedPiglin.java @@ -105,6 +105,13 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { } // Purpur end - Configurable jockey options + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.zombifiedPiglinTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Override public void setPersistentAngerTarget(@Nullable UUID target) { this.persistentAngerTarget = target; diff --git a/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/net/minecraft/world/entity/monster/hoglin/Hoglin.java index 266d1838e6602ef6322c15732f2693a865911f2e..896bd531a5333d6dc8996bbdfc5c878b1a7d2da0 100644 --- a/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/net/minecraft/world/entity/monster/hoglin/Hoglin.java @@ -129,6 +129,13 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { } // Purpur end - Make entity breeding times configurable + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.hoglinTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Override public boolean canBeLeashed() { return true; diff --git a/net/minecraft/world/entity/monster/piglin/Piglin.java b/net/minecraft/world/entity/monster/piglin/Piglin.java index d923a424e2b33b7d4e9e4ecdce8e0a8c825038de..55ebfa5df06a59203248514d10dced9660ebf215 100644 --- a/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/net/minecraft/world/entity/monster/piglin/Piglin.java @@ -176,6 +176,13 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento } // Purpur end - Configurable entity base attributes + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.piglinTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Override public void addAdditionalSaveData(CompoundTag compound) { super.addAdditionalSaveData(compound); diff --git a/net/minecraft/world/entity/monster/piglin/PiglinBrute.java b/net/minecraft/world/entity/monster/piglin/PiglinBrute.java index eb82252cd87797927e153974b9280b5eaa251080..2237681f298113bda0556699e19e880f4b04a853 100644 --- a/net/minecraft/world/entity/monster/piglin/PiglinBrute.java +++ b/net/minecraft/world/entity/monster/piglin/PiglinBrute.java @@ -90,6 +90,13 @@ public class PiglinBrute extends AbstractPiglin { } // Purpur end - Configurable entity base attributes + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.piglinBruteTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + public static AttributeSupplier.Builder createAttributes() { return Monster.createMonsterAttributes() .add(Attributes.MAX_HEALTH, 50.0) diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java index 8f6e530d5ae170765440c451d82b113345de7c74..e28693d44ccee646f0e513fab8d2ebad7966f71c 100644 --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java @@ -232,6 +232,13 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } // Purpur end - Configurable entity base attributes + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.villagerTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Override public Brain getBrain() { return (Brain)super.getBrain(); diff --git a/net/minecraft/world/entity/npc/WanderingTrader.java b/net/minecraft/world/entity/npc/WanderingTrader.java index cef51ce86dcbc5ec01bfcbcb487325b55779be52..1d1ea911bad49d0304712512a683af13a256d0a5 100644 --- a/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/net/minecraft/world/entity/npc/WanderingTrader.java @@ -107,6 +107,13 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill } // Purpur end - Villagers follow emerald blocks + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.wanderingTraderTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Override protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this));