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 cbb7e0591dc761d0566ac99dc6e5697b3ba4eeda..a10a1e26d0260968c6becd1e9d68436071da8411 100644 --- a/net/minecraft/world/entity/GlowSquid.java +++ b/net/minecraft/world/entity/GlowSquid.java @@ -54,6 +54,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 4624aca3dc3054ce7558023033fc953aedd33d88..a64afb30454ee537b0e044d6d55ce0b0a8e944ea 100644 --- a/net/minecraft/world/entity/ambient/Bat.java +++ b/net/minecraft/world/entity/ambient/Bat.java @@ -112,6 +112,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 f7d948294efcac1deac559d1fc9453f1dd0de659..b2b234490aba52c8125c0644f0176fe825b63e91 100644 --- a/net/minecraft/world/entity/animal/Bee.java +++ b/net/minecraft/world/entity/animal/Bee.java @@ -185,7 +185,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); - if (this.level().purpurConfig.beeCanInstantlyStartDrowning) this.setPathfindingMalus(PathType.WATER, -1.0F); // Purpur - bee can instantly start drowning in water option + if (this.level().purpurConfig.beeCanInstantlyStartDrowning || isSensitiveToWater()) this.setPathfindingMalus(PathType.WATER, -1.0F); // Purpur - bee can instantly start drowning in water option // 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); @@ -489,6 +489,13 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { } // Purpur end - Make entity breeding times configurable + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.beeTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @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 307f62466c9486ffdf8c2991fb805730198f38eb..09467cb1f8f3c6978771464b292e33a1396d76e3 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 { } // Purpur end - Make entity breeding times configurable + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.catTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Override protected void registerGoals() { this.temptGoal = new Cat.CatTemptGoal(this, 0.6, stack -> stack.is(ItemTags.CAT_FOOD), true); diff --git a/net/minecraft/world/entity/animal/Chicken.java b/net/minecraft/world/entity/animal/Chicken.java index b65abf395b3d3c10dc20604b670e44c183f5131b..dde117db5952784e385f242d388b062d0fa1d49d 100644 --- a/net/minecraft/world/entity/animal/Chicken.java +++ b/net/minecraft/world/entity/animal/Chicken.java @@ -109,6 +109,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 9b9a237a20d8e39ac11a39a4d5782084f97ea674..f8fbba4ae8b0ecf9aec33f60b908a88fa2933713 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 298cbc74a7d26de1cd0fb356ce9e802c0cc3a1ca..a71b6c8a0c48d9c7121e7d29cff6d388cb2df09f 100644 --- a/net/minecraft/world/entity/animal/Cow.java +++ b/net/minecraft/world/entity/animal/Cow.java @@ -61,6 +61,13 @@ public class Cow extends AbstractCow { } // 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 defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/Dolphin.java b/net/minecraft/world/entity/animal/Dolphin.java index caf0f3c0690344fafb9a52a55f81b25ea6aa91a9..b89f87425721e540d612b62bd3a78eb6d3fcfaf7 100644 --- a/net/minecraft/world/entity/animal/Dolphin.java +++ b/net/minecraft/world/entity/animal/Dolphin.java @@ -160,6 +160,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 0f32571b193ba48540c283026e5a5d99314951fe..71def83ec7b69832dbb0af4eaa012e25673e38b3 100644 --- a/net/minecraft/world/entity/animal/Fox.java +++ b/net/minecraft/world/entity/animal/Fox.java @@ -197,6 +197,13 @@ public class Fox 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.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/HappyGhast.java b/net/minecraft/world/entity/animal/HappyGhast.java index 5f7ab269e406e6d6912a58b3b48123d6c4da282c..dbc01564e23e7785e85b16f100925d36496ef51c 100644 --- a/net/minecraft/world/entity/animal/HappyGhast.java +++ b/net/minecraft/world/entity/animal/HappyGhast.java @@ -152,6 +152,13 @@ public class HappyGhast 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.happyGhastTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Override protected void ageBoundaryReached() { if (this.isBaby()) { diff --git a/net/minecraft/world/entity/animal/IronGolem.java b/net/minecraft/world/entity/animal/IronGolem.java index a8ae43ab84d746e8f046b52410602607e759761e..54b7edced2b95f874d9ef7ba21418a68e9bd6291 100644 --- a/net/minecraft/world/entity/animal/IronGolem.java +++ b/net/minecraft/world/entity/animal/IronGolem.java @@ -101,6 +101,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 (this.level().purpurConfig.ironGolemPoppyCalm) this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.ReceiveFlower(this)); // Purpur - Iron golem calm anger options diff --git a/net/minecraft/world/entity/animal/MushroomCow.java b/net/minecraft/world/entity/animal/MushroomCow.java index 6cbf93991ee375d2051128721a409a3a7a9064e8..ddd763cc38e8c624db7ef207f244961bda0b5ae1 100644 --- a/net/minecraft/world/entity/animal/MushroomCow.java +++ b/net/minecraft/world/entity/animal/MushroomCow.java @@ -94,6 +94,13 @@ public class MushroomCow extends AbstractCow implements Shearable { } // Purpur end - Make entity breeding times configurable + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.mooshroomTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Override public float getWalkTargetValue(BlockPos pos, LevelReader level) { return level.getBlockState(pos.below()).is(Blocks.MYCELIUM) ? 10.0F : level.getPathfindingCostFromLightLevels(pos); diff --git a/net/minecraft/world/entity/animal/Ocelot.java b/net/minecraft/world/entity/animal/Ocelot.java index f047fa8d33ab6b7e01447f91e6c33e22e9ce9e02..15d0d05dd80744880da9192d3fdfe3bc0c3e9401 100644 --- a/net/minecraft/world/entity/animal/Ocelot.java +++ b/net/minecraft/world/entity/animal/Ocelot.java @@ -97,6 +97,13 @@ public class Ocelot 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.ocelotTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + public boolean isTrusting() { return this.entityData.get(DATA_TRUSTING); } diff --git a/net/minecraft/world/entity/animal/Panda.java b/net/minecraft/world/entity/animal/Panda.java index fbe06479b24fd0e76a063eeac96447fa88c7d45b..4e9aa65002e4134600ee95b16bd14dcb6f1f46ee 100644 --- a/net/minecraft/world/entity/animal/Panda.java +++ b/net/minecraft/world/entity/animal/Panda.java @@ -149,6 +149,13 @@ public class Panda 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.pandaTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Override protected boolean canDispenserEquipIntoSlot(EquipmentSlot slot) { return slot == EquipmentSlot.MAINHAND && this.canPickUpLoot(); diff --git a/net/minecraft/world/entity/animal/Parrot.java b/net/minecraft/world/entity/animal/Parrot.java index 0749317e7f1a7b54759b9cd335419e7f92362715..d31e85b63f41121678c67e6c284923251ef744f6 100644 --- a/net/minecraft/world/entity/animal/Parrot.java +++ b/net/minecraft/world/entity/animal/Parrot.java @@ -209,6 +209,13 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { } // Purpur end - Make entity breeding times configurable + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.parrotTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Nullable @Override public SpawnGroupData finalizeSpawn( diff --git a/net/minecraft/world/entity/animal/Pig.java b/net/minecraft/world/entity/animal/Pig.java index 5300c3ae50633aa513c25384c1a2084701921cb9..719317c3cd5fc0202ef5deb150e0304191b121b8 100644 --- a/net/minecraft/world/entity/animal/Pig.java +++ b/net/minecraft/world/entity/animal/Pig.java @@ -98,6 +98,13 @@ public class Pig extends Animal implements ItemSteerable { } // Purpur end - Make entity breeding times configurable + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.pigTakeDamageFromWater; + } + // 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/PolarBear.java b/net/minecraft/world/entity/animal/PolarBear.java index 884137b428a1fe69bb61b9ae05b652357daecc27..eda9e5965a6ff244288215188de8e05ebcb61f14 100644 --- a/net/minecraft/world/entity/animal/PolarBear.java +++ b/net/minecraft/world/entity/animal/PolarBear.java @@ -132,6 +132,13 @@ public class PolarBear extends Animal implements NeutralMob { } // Purpur end - Make entity breeding times configurable + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.polarBearTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Nullable @Override public AgeableMob getBreedOffspring(ServerLevel level, AgeableMob partner) { diff --git a/net/minecraft/world/entity/animal/Pufferfish.java b/net/minecraft/world/entity/animal/Pufferfish.java index 7ce2f0397b05e98a1d5721b6f5674cfbe7d19333..0f3bf73faf5c8d4bae5af6d4a9c4fa1be8394a6b 100644 --- a/net/minecraft/world/entity/animal/Pufferfish.java +++ b/net/minecraft/world/entity/animal/Pufferfish.java @@ -66,6 +66,13 @@ public class Pufferfish extends AbstractFish { } // Purpur end - Configurable entity base attributes + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.pufferfishTakeDamageFromWater; + } + // 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/Rabbit.java b/net/minecraft/world/entity/animal/Rabbit.java index f45ae44b37b512bf63e719ff15b538431a2c7e7f..0320fbe2d266366f85080487ac9533b672451cbb 100644 --- a/net/minecraft/world/entity/animal/Rabbit.java +++ b/net/minecraft/world/entity/animal/Rabbit.java @@ -162,6 +162,13 @@ public class Rabbit 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.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 e5790db0472fa97471b828cf6d817697389c3a8c..b9641e307d669ba20428843575a6bb39065df034 100644 --- a/net/minecraft/world/entity/animal/Salmon.java +++ b/net/minecraft/world/entity/animal/Salmon.java @@ -58,6 +58,13 @@ public class Salmon extends AbstractSchoolingFish { } // Purpur end - Configurable entity base attributes + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.salmonTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Override public int getMaxSchoolSize() { return 5; diff --git a/net/minecraft/world/entity/animal/SnowGolem.java b/net/minecraft/world/entity/animal/SnowGolem.java index 20f73d895bc55581c62283825a6d5296150ac707..6cb6ff86e3fd7b9dd2929669dc1b0d339af9a95a 100644 --- a/net/minecraft/world/entity/animal/SnowGolem.java +++ b/net/minecraft/world/entity/animal/SnowGolem.java @@ -125,7 +125,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @Override public boolean isSensitiveToWater() { - return true; + return this.level().purpurConfig.snowGolemTakeDamageFromWater; // Purpur - Toggle for water sensitive mob damage } @Override diff --git a/net/minecraft/world/entity/animal/Squid.java b/net/minecraft/world/entity/animal/Squid.java index 4f8a5d0d6c3d302ebf8fcb3268f8e40b63686125..fcdab19016a3f92776447a51df9ea2796461ef9c 100644 --- a/net/minecraft/world/entity/animal/Squid.java +++ b/net/minecraft/world/entity/animal/Squid.java @@ -100,6 +100,13 @@ public class Squid extends AgeableWaterCreature { } // Purpur end - Configurable entity base attributes + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.squidTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Override protected void registerGoals() { this.goalSelector.addGoal(0, new Squid.SquidRandomMovementGoal(this)); diff --git a/net/minecraft/world/entity/animal/TropicalFish.java b/net/minecraft/world/entity/animal/TropicalFish.java index 95368fd534c77e7d89ed6219f1f3948c428c256c..22a75b6b1e6f130027e39051f04267fb436ae6de 100644 --- a/net/minecraft/world/entity/animal/TropicalFish.java +++ b/net/minecraft/world/entity/animal/TropicalFish.java @@ -96,6 +96,13 @@ public class TropicalFish extends AbstractSchoolingFish { } // Purpur end - Configurable entity base attributes + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.tropicalFishTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + public static String getPredefinedName(int variantId) { return "entity.minecraft.tropical_fish.predefined." + variantId; } diff --git a/net/minecraft/world/entity/animal/Turtle.java b/net/minecraft/world/entity/animal/Turtle.java index 11a5f8d1a424531105436f96a097de6e9745be96..536a0cddb05e1224562528d19a69a9ef5c1e07f5 100644 --- a/net/minecraft/world/entity/animal/Turtle.java +++ b/net/minecraft/world/entity/animal/Turtle.java @@ -119,6 +119,13 @@ public class Turtle 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.turtleTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + public void setHomePos(BlockPos homePos) { this.homePos = homePos; } diff --git a/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/net/minecraft/world/entity/animal/axolotl/Axolotl.java index 277e955eabed07bdc50531dfe182de8cb05e56c2..c32a5f348e41d6ff733331b85baf32da839083fe 100644 --- a/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/net/minecraft/world/entity/animal/axolotl/Axolotl.java @@ -153,6 +153,13 @@ public class Axolotl extends Animal implements Bucketable { } // 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/coppergolem/CopperGolem.java b/net/minecraft/world/entity/animal/coppergolem/CopperGolem.java index cfe0bb8983dd1633085e03a6c2a57d99a0d822b8..e533edb6163cada2bc9bc9ed61bf333b2a2703b8 100644 --- a/net/minecraft/world/entity/animal/coppergolem/CopperGolem.java +++ b/net/minecraft/world/entity/animal/coppergolem/CopperGolem.java @@ -143,6 +143,13 @@ public class CopperGolem extends AbstractGolem implements ContainerUser, Shearab } // Purpur end - Configurable entity base attributes + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.copperGolemTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + public static AttributeSupplier.Builder createAttributes() { return Mob.createMobAttributes().add(Attributes.MOVEMENT_SPEED, 0.2F).add(Attributes.STEP_HEIGHT, 1.0).add(Attributes.MAX_HEALTH, 12.0); } diff --git a/net/minecraft/world/entity/animal/goat/Goat.java b/net/minecraft/world/entity/animal/goat/Goat.java index afcd9d3ea11d94ef811cce71f54f2a718619cc9f..60c97b44d3977eda2fa2c302aad3c7e337de51d9 100644 --- a/net/minecraft/world/entity/animal/goat/Goat.java +++ b/net/minecraft/world/entity/animal/goat/Goat.java @@ -139,6 +139,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 293d6059bc5e50b66b23e8e2e1d759e61cb26999..322ff19885fc2a982bc3c4bd7b5588cd2974e425 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 public 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 513856b5047842edd501eb6c23c13e3bf10d7249..4d8c6eac4d276dac7859bed1a1c83d45f1858b64 100644 --- a/net/minecraft/world/entity/animal/horse/Horse.java +++ b/net/minecraft/world/entity/animal/horse/Horse.java @@ -78,6 +78,13 @@ public class Horse extends AbstractHorse { } // 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 df3fd52ed0bc794919ff20c4eb8c561ec2b5ad8f..32ceec4a08010a2febaac47b6288673cbc71ac90 100644 --- a/net/minecraft/world/entity/animal/horse/Llama.java +++ b/net/minecraft/world/entity/animal/horse/Llama.java @@ -161,6 +161,13 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { } // Purpur end - Make entity breeding times configurable + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.llamaTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + public boolean isTraderLlama() { return false; } diff --git a/net/minecraft/world/entity/animal/horse/Mule.java b/net/minecraft/world/entity/animal/horse/Mule.java index 5e6a9467d15e551ab2c8b3e42abd096a85e36037..b1c320210e3116249043ef91feb621e1af5afabf 100644 --- a/net/minecraft/world/entity/animal/horse/Mule.java +++ b/net/minecraft/world/entity/animal/horse/Mule.java @@ -46,6 +46,13 @@ public class Mule 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.muleTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Override public SoundEvent getAmbientSound() { return SoundEvents.MULE_AMBIENT; diff --git a/net/minecraft/world/entity/animal/horse/SkeletonHorse.java b/net/minecraft/world/entity/animal/horse/SkeletonHorse.java index 024591d5ffd396391864554e7b532910d465c30a..9cd58494f090dd0d16787b3d739cbaa8bcd92370 100644 --- a/net/minecraft/world/entity/animal/horse/SkeletonHorse.java +++ b/net/minecraft/world/entity/animal/horse/SkeletonHorse.java @@ -73,6 +73,13 @@ public class SkeletonHorse extends AbstractHorse { } // Purpur end - Make entity breeding times configurable + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.skeletonHorseTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + public static AttributeSupplier.Builder createAttributes() { return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0).add(Attributes.MOVEMENT_SPEED, 0.2F); } diff --git a/net/minecraft/world/entity/animal/horse/TraderLlama.java b/net/minecraft/world/entity/animal/horse/TraderLlama.java index 8b63470177d60d79fe0b774a301d36701026a803..204dfdeb5c3bb650dbd6c990c6a2e1e4d14b8c77 100644 --- a/net/minecraft/world/entity/animal/horse/TraderLlama.java +++ b/net/minecraft/world/entity/animal/horse/TraderLlama.java @@ -77,6 +77,13 @@ public class TraderLlama extends Llama { } // Purpur end - Make entity breeding times configurable + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.traderLlamaTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Override public boolean isTraderLlama() { return true; diff --git a/net/minecraft/world/entity/animal/horse/ZombieHorse.java b/net/minecraft/world/entity/animal/horse/ZombieHorse.java index 0d6d470b8680aed64d2b208b2ed9b037c96563d9..fd8a512910c886af1ae4e66edbf7f8d6fe0bc4f3 100644 --- a/net/minecraft/world/entity/animal/horse/ZombieHorse.java +++ b/net/minecraft/world/entity/animal/horse/ZombieHorse.java @@ -69,6 +69,13 @@ public class ZombieHorse extends AbstractHorse { } // Purpur end - Make entity breeding times configurable + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.zombieHorseTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + public static AttributeSupplier.Builder createAttributes() { return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0).add(Attributes.MOVEMENT_SPEED, 0.2F); } diff --git a/net/minecraft/world/entity/animal/sheep/Sheep.java b/net/minecraft/world/entity/animal/sheep/Sheep.java index baa18417b0b66f33aa3bb21032cd5816dc0ed800..3bdadfed6a06b965193cc615c490f89de65d515e 100644 --- a/net/minecraft/world/entity/animal/sheep/Sheep.java +++ b/net/minecraft/world/entity/animal/sheep/Sheep.java @@ -95,6 +95,13 @@ public class Sheep extends Animal implements Shearable { } // Purpur end - Make entity breeding times configurable + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.sheepTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Override protected void registerGoals() { this.eatBlockGoal = new EatBlockGoal(this); diff --git a/net/minecraft/world/entity/animal/wolf/Wolf.java b/net/minecraft/world/entity/animal/wolf/Wolf.java index 70b14a44f3d504788218b85317bb3812007386b0..9832cafd14d42d3bf92bb5791d6ded4008215998 100644 --- a/net/minecraft/world/entity/animal/wolf/Wolf.java +++ b/net/minecraft/world/entity/animal/wolf/Wolf.java @@ -224,6 +224,13 @@ public class Wolf extends TamableAnimal implements NeutralMob { } // Purpur end - Make entity breeding times configurable + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.wolfTakeDamageFromWater; + } + // 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/boss/enderdragon/EnderDragon.java b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java index bf9c295408902dc02b96e54959231338cd52c29c..5229ea2712436c4b087f1a159e3b1f680f0d237c 100644 --- a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java @@ -173,6 +173,13 @@ public class EnderDragon extends Mob implements Enemy { } // Purpur end - Configurable entity base attributes + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.enderDragonTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + public static AttributeSupplier.Builder createAttributes() { return Mob.createMobAttributes().add(Attributes.MAX_HEALTH, 200.0).add(Attributes.CAMERA_DISTANCE, 16.0); } diff --git a/net/minecraft/world/entity/boss/wither/WitherBoss.java b/net/minecraft/world/entity/boss/wither/WitherBoss.java index 6d35cce3fde4d0cee5fa1266d831fdf97ad85d35..e4f3d21422ccf45aee34885cc7633f37ec0c9903 100644 --- a/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/net/minecraft/world/entity/boss/wither/WitherBoss.java @@ -222,6 +222,13 @@ public class WitherBoss extends Monster implements RangedAttackMob { } // Purpur end - Configurable entity base attributes + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.witherTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Override protected PathNavigation createNavigation(Level level) { FlyingPathNavigation flyingPathNavigation = new FlyingPathNavigation(this, level); diff --git a/net/minecraft/world/entity/monster/Blaze.java b/net/minecraft/world/entity/monster/Blaze.java index cb536ec921c837b86c2c1dfbe1d6b08a9b18bf0f..8941252b8c91ce26097651ab32c139a53c43feb3 100644 --- a/net/minecraft/world/entity/monster/Blaze.java +++ b/net/minecraft/world/entity/monster/Blaze.java @@ -35,7 +35,7 @@ public class Blaze extends Monster { public Blaze(EntityType type, Level level) { super(type, 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); @@ -158,7 +158,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 ca8e92447eb5f58e2bd855ac6fa1d580425218f9..239d855df83083e0eb875c430a165427f3a143de 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 target) { if (super.doHurtTarget(level, target)) { diff --git a/net/minecraft/world/entity/monster/Creeper.java b/net/minecraft/world/entity/monster/Creeper.java index 6259636b9856be5b03af83ee515e70cbf1eb51d8..719c752270c3f1b2496184df0eb728e3c934a3d5 100644 --- a/net/minecraft/world/entity/monster/Creeper.java +++ b/net/minecraft/world/entity/monster/Creeper.java @@ -266,6 +266,13 @@ public class Creeper extends Monster { } // Purpur end - Config to make Creepers explode on death + // 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 public 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 af8c33c6d8ecbc7c3d8a33fc740adc26a43c08b3..6beaed7f1ce39bef190cfa7e1addc28b929c0747 100644 --- a/net/minecraft/world/entity/monster/Drowned.java +++ b/net/minecraft/world/entity/monster/Drowned.java @@ -123,6 +123,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 57fb334f670d35aa181b13e12fa2c5f36da1dda6..1ea323a17440abbe36c9528e80e169816267005b 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 0d2fb6a1b4c8e02e40afa612744e259ef3230c0a..f6cc9107702e5cfa985694c7c88ae21622cd39c6 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 type, Level level) { super(type, 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 @@ -287,7 +287,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 c6ae00f6ab83743b9ce43d9e55f04ba23b0de0f1..c79c689cb99ad2a6cab88cf8b583ff0f9e91b115 100644 --- a/net/minecraft/world/entity/monster/Endermite.java +++ b/net/minecraft/world/entity/monster/Endermite.java @@ -72,6 +72,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 24d104036902b8aaf79325e33d3063ccea29e13e..9015643b47e2d20a5c75c5f4bf2ec66399d4a2e5 100644 --- a/net/minecraft/world/entity/monster/Evoker.java +++ b/net/minecraft/world/entity/monster/Evoker.java @@ -73,6 +73,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 30b75f7e7a79aaa602083eb07f125a3a5e5f19f9..544f3564411138c59eaad2b0bf50ec01ceb319bf 100644 --- a/net/minecraft/world/entity/monster/Ghast.java +++ b/net/minecraft/world/entity/monster/Ghast.java @@ -83,6 +83,13 @@ public class Ghast extends Mob 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 e6fb01e4e2146d6c6971d80af0f101d20c03950a..2204c729ce42e89a0b42b365e0060098afcf68f9 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) diff --git a/net/minecraft/world/entity/monster/Guardian.java b/net/minecraft/world/entity/monster/Guardian.java index d206d9b8563dfd38c0ff4c8b4abe00aa064a2305..901338319b78e538208f72ead289f7277fd00eb9 100644 --- a/net/minecraft/world/entity/monster/Guardian.java +++ b/net/minecraft/world/entity/monster/Guardian.java @@ -99,6 +99,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 d3e1f5debbd34b8afff06498de48299da37c3add..fe593e955c93f5dd211db11a3e2ae8051e74e164 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 b6872c94d769346ed2a8bb2406fc2b39ef64a67c..ee5e0b20f65a5f7d7dc2cf8fea2eff56f8f56a41 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 db9e4dff83640b1e499db944a0c1cf3b869bc314..bce9a085dfbe06bd4a869ae8d7d407ebbf7ad6b4 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 8ebe339c91d61166078291dc9f5f70dd596cc58f..f6ee097af3337c39baacad9a572443141c750223 100644 --- a/net/minecraft/world/entity/monster/Phantom.java +++ b/net/minecraft/world/entity/monster/Phantom.java @@ -130,6 +130,13 @@ public class Phantom extends Mob 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 748233be6bdfd735aa3ccc02a7ba21a45603ffa4..1aa2f744b0d875fb874cf23a0601fee48ead66c2 100644 --- a/net/minecraft/world/entity/monster/Pillager.java +++ b/net/minecraft/world/entity/monster/Pillager.java @@ -89,6 +89,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 0220bb3add91779979cf7591dc1ea18f69f9e7c4..2dcf90e3be35290ed9cbe7cf19aa67d1f9acac80 100644 --- a/net/minecraft/world/entity/monster/Ravager.java +++ b/net/minecraft/world/entity/monster/Ravager.java @@ -102,6 +102,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 3909804ba8f9e220260efe6255ff2b298a4448db..21b28d1ba59656b123aef95a7e18075dae9bc236 100644 --- a/net/minecraft/world/entity/monster/Shulker.java +++ b/net/minecraft/world/entity/monster/Shulker.java @@ -134,6 +134,13 @@ public class Shulker extends AbstractGolem implements Enemy { } // Purpur end - Configurable entity base attributes + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.shulkerTakeDamageFromWater; + } + // 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/Silverfish.java b/net/minecraft/world/entity/monster/Silverfish.java index d81ed52599cf4cba49726f2ad9da4ce1dab14df1..58a759fdfae0ef20decc82842bdf4e9947f51807 100644 --- a/net/minecraft/world/entity/monster/Silverfish.java +++ b/net/minecraft/world/entity/monster/Silverfish.java @@ -66,6 +66,13 @@ public class Silverfish extends Monster { } // Purpur end - Configurable entity base attributes + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.silverfishTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Override protected void registerGoals() { this.friendsGoal = new Silverfish.SilverfishWakeUpFriendsGoal(this); diff --git a/net/minecraft/world/entity/monster/Skeleton.java b/net/minecraft/world/entity/monster/Skeleton.java index 0a5d78da5f809afde38ebbbcec3798a7a5f0f9be..c7bfa5214fd46c6b5e264314f86ca5c2904bf123 100644 --- a/net/minecraft/world/entity/monster/Skeleton.java +++ b/net/minecraft/world/entity/monster/Skeleton.java @@ -50,6 +50,13 @@ public class Skeleton extends AbstractSkeleton { } // Purpur end - Configurable entity base attributes + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.skeletonTakeDamageFromWater; + } + // 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/Slime.java b/net/minecraft/world/entity/monster/Slime.java index 5af9f8182fa8bc3720cf30ed073ecc8050a76b43..7c5d3c30be47f0cac043e73153a1face837406dd 100644 --- a/net/minecraft/world/entity/monster/Slime.java +++ b/net/minecraft/world/entity/monster/Slime.java @@ -134,6 +134,13 @@ public class Slime extends Mob implements Enemy { } // Purpur end - Configurable entity base attributes + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.slimeTakeDamageFromWater; + } + // 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/Spider.java b/net/minecraft/world/entity/monster/Spider.java index 580047cd6a803ffdf6a1887d32731ddfd23316b9..5fa082b5a04d152c72f6053ca6bc4598899ca30c 100644 --- a/net/minecraft/world/entity/monster/Spider.java +++ b/net/minecraft/world/entity/monster/Spider.java @@ -75,6 +75,13 @@ public class Spider extends Monster { } // Purpur end - Configurable entity base attributes + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.spiderTakeDamageFromWater; + } + // 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/Stray.java b/net/minecraft/world/entity/monster/Stray.java index 1be523e22b2fa0f9546eb272f3f68a896a0575c9..1d99432da3df434394a746f0bf4d5cc62c90dcba 100644 --- a/net/minecraft/world/entity/monster/Stray.java +++ b/net/minecraft/world/entity/monster/Stray.java @@ -46,6 +46,13 @@ public class Stray extends AbstractSkeleton { } // Purpur end - Configurable entity base attributes + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.strayTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + public static boolean checkStraySpawnRules( EntityType 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 6760c826cf72cc704f54ea0e3d6aaffde4ac22c4..1004aaf885268d08e68e5d2465fae2b5566a4eff 100644 --- a/net/minecraft/world/entity/monster/Strider.java +++ b/net/minecraft/world/entity/monster/Strider.java @@ -86,7 +86,7 @@ public class Strider extends Animal implements ItemSteerable { public Strider(EntityType type, Level level) { super(type, 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); @@ -390,7 +390,7 @@ public class Strider extends Animal implements ItemSteerable { @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 09211a8a5b893f878ad173c4ab71393c8f309f58..13285c9f233c3240729de4baf5f014e25b245547 100644 --- a/net/minecraft/world/entity/monster/Vex.java +++ b/net/minecraft/world/entity/monster/Vex.java @@ -112,6 +112,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 fdaf024a27825844105ef62baddf30e3b4412d28..33452593731c53f404059271b3fbb0407d75517c 100644 --- a/net/minecraft/world/entity/monster/Vindicator.java +++ b/net/minecraft/world/entity/monster/Vindicator.java @@ -81,6 +81,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 35dc597e5b0e703319eb5ff31bde0960b224fc40..a785deb09373e20c13f8be49626d9619491b02c8 100644 --- a/net/minecraft/world/entity/monster/Witch.java +++ b/net/minecraft/world/entity/monster/Witch.java @@ -82,6 +82,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 4d4e04d9fb5b68897ffa6f299bd2009bb397da3d..778779c79c56e2ca438ecbb82fbb16d70d312524 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 e7e840ba5383c28e0167e7dd032359403ae3224a..d9ca3944fce3464be69ca1b3b5191e2d8de01e3d 100644 --- a/net/minecraft/world/entity/monster/Zoglin.java +++ b/net/minecraft/world/entity/monster/Zoglin.java @@ -112,6 +112,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 3095dfbba2c3e61a550abc7c48e91f5704909e03..23484fe8ca8568d533e1604876900f75a96ac6d8 100644 --- a/net/minecraft/world/entity/monster/Zombie.java +++ b/net/minecraft/world/entity/monster/Zombie.java @@ -142,6 +142,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 cf88072320f46ec9cf2194f8debe05e33702521f..5ae0e9d5f3c3b7a6f64775396acf061ff0d3561f 100644 --- a/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/net/minecraft/world/entity/monster/ZombieVillager.java @@ -121,6 +121,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 06e2207d7ea554226b02d65c7fb612a87da71caa..46520af2dcf89a54374b933f5acdb8d2c66abbff 100644 --- a/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/net/minecraft/world/entity/monster/ZombifiedPiglin.java @@ -106,6 +106,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 1f5096856ab353e2920003a54f530c952e8988da..053c47fcaf4e5d3bc8f9a3d913508a7816b15747 100644 --- a/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/net/minecraft/world/entity/monster/hoglin/Hoglin.java @@ -128,6 +128,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 + @VisibleForTesting public void setTimeInOverworld(int timeInOverworld) { this.timeInOverworld = timeInOverworld; diff --git a/net/minecraft/world/entity/monster/piglin/Piglin.java b/net/minecraft/world/entity/monster/piglin/Piglin.java index de65ff0bf3de1d20360bc0ebb1cd3dc48c5560fe..293d6359469095c5faf87ec574ac8a475ce33ba9 100644 --- a/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/net/minecraft/world/entity/monster/piglin/Piglin.java @@ -161,6 +161,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 protected void addAdditionalSaveData(ValueOutput output) { super.addAdditionalSaveData(output); diff --git a/net/minecraft/world/entity/monster/piglin/PiglinBrute.java b/net/minecraft/world/entity/monster/piglin/PiglinBrute.java index 31e38737806098795de0e87fbcaf60d4ab83ea6e..e988a65cbd1f71f488fa8221ef11b6b1a05dc554 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 03b4130179b34735243b3c0b86879dbb7d9f9f00..2a145e4eb0474950cbfb4a229891b4b2320d98d2 100644 --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java @@ -282,6 +282,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 e5a6cc63d29be742be039053c39f983ed9c6a1e1..6e5f5711b729b41f5221fb7e7d0c8dad57f790ca 100644 --- a/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/net/minecraft/world/entity/npc/WanderingTrader.java @@ -98,6 +98,13 @@ public class WanderingTrader extends AbstractVillager implements Consumable.Over } // 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));