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 b6f52326f52ce2885ece346944a321d7c924a470..fe6f29c5e663daea017b19aaafaddda40b4c22bb 100644 --- a/net/minecraft/world/entity/GlowSquid.java +++ b/net/minecraft/world/entity/GlowSquid.java @@ -53,6 +53,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 581894f58df1df4b50aa537252cb4be6bbcebf80..4d44b35ee34eb256b9aff9d74b1cb9ae1ac9503f 100644 --- a/net/minecraft/world/entity/ambient/Bat.java +++ b/net/minecraft/world/entity/ambient/Bat.java @@ -110,6 +110,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 afe7fd92348e6a2a26f8f258373b0c57bb5f4f3f..8da974e98f2207d76e8962eda54c75d0356ecc6f 100644 --- a/net/minecraft/world/entity/animal/Bee.java +++ b/net/minecraft/world/entity/animal/Bee.java @@ -181,7 +181,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { 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); @@ -487,6 +487,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 75a63c8e8917f20b389f8194ae3089ff41e9d0ff..1d758dd3ee0834fcf9ebf737bc7a016b881145e5 100644 --- a/net/minecraft/world/entity/animal/Cat.java +++ b/net/minecraft/world/entity/animal/Cat.java @@ -131,6 +131,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 ef808c4462387bb73466b33d1c3156796fea251b..3faa8ac614b6d2f8f90c7092900aa24aa976c0ac 100644 --- a/net/minecraft/world/entity/animal/Chicken.java +++ b/net/minecraft/world/entity/animal/Chicken.java @@ -108,6 +108,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 ed52fbbf93e7a238d0f45981f8629ba8613bf3d4..6128ed595cb97cc11c1a0e1e1673b3af8e428fb8 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 0f4f732d9501df42e0d42fe978692c4b0e3d8f0b..4bc6d0eb56b4674e2ac0f13010521314a95e0096 100644 --- a/net/minecraft/world/entity/animal/Cow.java +++ b/net/minecraft/world/entity/animal/Cow.java @@ -60,6 +60,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 932ec7ed4ec102f64fa977835d2c7ebe23afa6e3..4f3777ee9cf7a67d5e2f489dbcf40ec2a1ed13cd 100644 --- a/net/minecraft/world/entity/animal/Dolphin.java +++ b/net/minecraft/world/entity/animal/Dolphin.java @@ -158,6 +158,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 e3631adee6ef690807768c90045c28570982b315..98cb5c75bb4397914271f81aeace045105a9572e 100644 --- a/net/minecraft/world/entity/animal/Fox.java +++ b/net/minecraft/world/entity/animal/Fox.java @@ -194,6 +194,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/IronGolem.java b/net/minecraft/world/entity/animal/IronGolem.java index fd0d1abcb34862fc7a812f1e3d96969a5c917352..498302a20b783f2208417b56716f4fc4f18bc333 100644 --- a/net/minecraft/world/entity/animal/IronGolem.java +++ b/net/minecraft/world/entity/animal/IronGolem.java @@ -99,6 +99,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 24313a5dd5f5be39677ac8080ecf56703c751923..114d893f74dfb4422380cad649b7f3708c29c1c3 100644 --- a/net/minecraft/world/entity/animal/MushroomCow.java +++ b/net/minecraft/world/entity/animal/MushroomCow.java @@ -92,6 +92,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 56b9fa9b24a9b5cf510dc6610a1b1bedf3a32d72..47429374bee47c98216a0eb6dbe65df5fcc0e117 100644 --- a/net/minecraft/world/entity/animal/Ocelot.java +++ b/net/minecraft/world/entity/animal/Ocelot.java @@ -95,6 +95,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 cc1144d44526caa7fc7549ecaf405813b4bad1de..85929b3f4503033d17ec7fd42746c5f071a3fd6f 100644 --- a/net/minecraft/world/entity/animal/Panda.java +++ b/net/minecraft/world/entity/animal/Panda.java @@ -148,6 +148,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 d69992a1f729ba99f3992920cd2372a04ff60996..c1d4bcbc3bad5f2fcaecd4007db7318a07a63324 100644 --- a/net/minecraft/world/entity/animal/Parrot.java +++ b/net/minecraft/world/entity/animal/Parrot.java @@ -206,6 +206,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 142581c85e4ee6be2798fc1d412ce6876f394adb..4618ea2c4d815c07cd94b7bd279167836a116aa7 100644 --- a/net/minecraft/world/entity/animal/Pig.java +++ b/net/minecraft/world/entity/animal/Pig.java @@ -97,6 +97,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 329115fcd70531c48b352008faef92e10ddc84de..f9d34a8242043ba61dcebb669754d9da0480eb13 100644 --- a/net/minecraft/world/entity/animal/PolarBear.java +++ b/net/minecraft/world/entity/animal/PolarBear.java @@ -131,6 +131,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 otherParent) { diff --git a/net/minecraft/world/entity/animal/Pufferfish.java b/net/minecraft/world/entity/animal/Pufferfish.java index bed7d937f02d1fbc8fdd277a2d0524e79b19f707..09977f4ce3545f076be26d173f40fc261fe3c515 100644 --- a/net/minecraft/world/entity/animal/Pufferfish.java +++ b/net/minecraft/world/entity/animal/Pufferfish.java @@ -65,6 +65,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 1c88e12d743325a429cad27928ea1ac43a696e8a..de2ffef11b50f3bde03785f6cb13c97c437288e5 100644 --- a/net/minecraft/world/entity/animal/Rabbit.java +++ b/net/minecraft/world/entity/animal/Rabbit.java @@ -159,6 +159,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 8559e7e8c5163eb55b997521dca2e96b5ae3c9bc..78f83edd809a72bf5a2f908d8d5e3b1755541a29 100644 --- a/net/minecraft/world/entity/animal/Salmon.java +++ b/net/minecraft/world/entity/animal/Salmon.java @@ -57,6 +57,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 1bf6fdc0149975fefbb73563e0d4861b178459b8..2af4ba00c9f48d3ab9063eda8abb3d15c1bb0929 100644 --- a/net/minecraft/world/entity/animal/SnowGolem.java +++ b/net/minecraft/world/entity/animal/SnowGolem.java @@ -124,7 +124,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 2a0dc779ec2a53a4feb4d2d665cf9d820113ba04..2108cbddc9a880347ff36fc4ce8b56e8215b9eac 100644 --- a/net/minecraft/world/entity/animal/Squid.java +++ b/net/minecraft/world/entity/animal/Squid.java @@ -99,6 +99,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 946874b3146bd7b226b4cb07110eec57c2968bb7..70afdcbd9d12f323ababde628e1422d1a1b82210 100644 --- a/net/minecraft/world/entity/animal/TropicalFish.java +++ b/net/minecraft/world/entity/animal/TropicalFish.java @@ -95,6 +95,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 57e4cb66fbf29b992a144ca923f2e22983cc1db5..f99c135a1b99a52c72388cdcc6c46933eb7ba75b 100644 --- a/net/minecraft/world/entity/animal/Turtle.java +++ b/net/minecraft/world/entity/animal/Turtle.java @@ -117,6 +117,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 8cf67fe3807ccbe8c9cdebf9d79f1fc5e4f1a817..da48db578931eb04ba7f2f1fbf26b6fb5bea617a 100644 --- a/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/net/minecraft/world/entity/animal/axolotl/Axolotl.java @@ -152,6 +152,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/goat/Goat.java b/net/minecraft/world/entity/animal/goat/Goat.java index a04892dce1f904fad3312499352ad56853ea658e..47de7e4710234676358378fb5fa9a6b034662e42 100644 --- a/net/minecraft/world/entity/animal/goat/Goat.java +++ b/net/minecraft/world/entity/animal/goat/Goat.java @@ -138,6 +138,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 9e1100d672bfb712854d23203d0b730b8cc78a3d..9b17b1acf63fddb5f5b6cdf95283ae8f619a8120 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 6c1897fadaf93e9a71f0e361a602e6d9475a4f50..8754c3d6fd06bd2c834fe06e238afa330b24e547 100644 --- a/net/minecraft/world/entity/animal/horse/Horse.java +++ b/net/minecraft/world/entity/animal/horse/Horse.java @@ -77,6 +77,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 db73d8821b3374341fa77fbbb3308a21abb60db6..2e776404e65c5dc6040d00a1ed8b5ce0df7badc0 100644 --- a/net/minecraft/world/entity/animal/horse/Llama.java +++ b/net/minecraft/world/entity/animal/horse/Llama.java @@ -153,6 +153,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 fe2570ceb96d39ff6598a67a4ac4b4707eb28656..14a17d4b33b276f28e45ce06de06793a73a50916 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 39b8b10b950359952c7b149e4fca08d68f1ad8eb..f1a131b9fe4fce78cf34e04eefc886a844a50e72 100644 --- a/net/minecraft/world/entity/animal/horse/SkeletonHorse.java +++ b/net/minecraft/world/entity/animal/horse/SkeletonHorse.java @@ -72,6 +72,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 c67f82654897bec94dce1226d5ef2ce10d53e077..4cd4bfd57285808f4bda7e7dd2ddeda36dd13af0 100644 --- a/net/minecraft/world/entity/animal/horse/TraderLlama.java +++ b/net/minecraft/world/entity/animal/horse/TraderLlama.java @@ -76,6 +76,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 69b9ae449e58f13bf0950fdfe3f89742af89956e..e78fac0a5e37d53afbc200f015adab60b3bfc9da 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 625f9b7bb027ccc4495d83349909be59e7a19061..1ecfda9a5222d7c175108edbbff552ea036e0321 100644 --- a/net/minecraft/world/entity/animal/sheep/Sheep.java +++ b/net/minecraft/world/entity/animal/sheep/Sheep.java @@ -116,6 +116,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 7bbcca12492b114211c71df5cf198da2ac4814f8..50fe10588a5cd7b263993db9a52309f332d47a3b 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 f014b4ca2baf97edf472ce4d8af1209eaf4d53d1..b782ddd14d68717c387754300fc1be69d05df66f 100644 --- a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java @@ -171,6 +171,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); } diff --git a/net/minecraft/world/entity/boss/wither/WitherBoss.java b/net/minecraft/world/entity/boss/wither/WitherBoss.java index 951de2194f8e669e454edd8678cd254e94d18ab7..5862384e096d0a97a9a92a921f704e441243e38a 100644 --- a/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/net/minecraft/world/entity/boss/wither/WitherBoss.java @@ -220,6 +220,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 1636e2809701013a18700ac17807fe7ecf191aa5..2bd645e163ca7b118beec5194e5c0b00e6dff563 100644 --- a/net/minecraft/world/entity/monster/Blaze.java +++ b/net/minecraft/world/entity/monster/Blaze.java @@ -34,7 +34,7 @@ public class Blaze extends Monster { public Blaze(EntityType 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 53a7390c61b9ada8784eae0c9b4e78ee85c68317..67f99138834011d12f429cf7ff6fdb7c6bd06262 100644 --- a/net/minecraft/world/entity/monster/Creeper.java +++ b/net/minecraft/world/entity/monster/Creeper.java @@ -264,6 +264,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 2004595c51564d863aee65fc47541014ea184e10..3dae0020a506527e1e556945da5334de54bdabee 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 15f037dbd9bafc8a978911dfa04c42f3c19dc7fd..27dd75a64af375ce498224bfd7ed4799ed586d9c 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 0cae67d67af733b0bc6558f8cc1056b45554e3ce..10b505712791d10e9b36cc6cfffeb590c74284e5 100644 --- a/net/minecraft/world/entity/monster/EnderMan.java +++ b/net/minecraft/world/entity/monster/EnderMan.java @@ -88,7 +88,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 @@ -285,7 +285,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 a3095f2a5ff162d502502ad2ed0a485daba86962..c4bfd0fb0fbee4fa72e4cf17931c95831daaf73f 100644 --- a/net/minecraft/world/entity/monster/Endermite.java +++ b/net/minecraft/world/entity/monster/Endermite.java @@ -71,6 +71,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 b14b72f7bbf6cb65b1515c12bae47187fe1371b5..e1debcc5d859961a9d9893fa5ffbe67deea35f6d 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 a55d588709bbf04d4267bd991fb3be0daaba34d4..4864009a9e531d37f9c3747a042d8ea1ed6ccbf7 100644 --- a/net/minecraft/world/entity/monster/Ghast.java +++ b/net/minecraft/world/entity/monster/Ghast.java @@ -85,6 +85,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 2b03af6e0f378d855c42fa688d0cd2bc8480102b..9868117ecf0a3b36f81086297c639f6f274e0055 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 75cb1db5584c04e442583ab2f50a26132ed48bfb..9baec22561093d64157d93449e84c23b3f238b39 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 09804a8c789bff4f40277c2697c3f9aed00c4d15..553a8f0f5b895f3d8528f10efdc918466e4f4d87 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 bb1364c4a220cc93f7ac01cbaa617561de4cd2e3..da90b7dc79aa6d01e88c1250fff662ba1b001dc3 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 eaa5f2db1bc6b01ef6a508cc5a60ff1e252c2360..409e98d0981aa8be0d35bc5c93f7130a9ce16860 100644 --- a/net/minecraft/world/entity/monster/Phantom.java +++ b/net/minecraft/world/entity/monster/Phantom.java @@ -140,6 +140,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 eb4fcf0e78c39a4b94b7edb733694a87e3103552..4c41e7e0a164779bf1d6765fdb750dcd60acd104 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 568a0d17600a82109263de715f3d54fc24039452..0b6550c3abad0eb00af4f303725045a8aa3dc4b1 100644 --- a/net/minecraft/world/entity/monster/Ravager.java +++ b/net/minecraft/world/entity/monster/Ravager.java @@ -100,6 +100,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 2b19edafe00be425427f47cac045bf301e3caa39..c9dab7d6b1afe8749022d99aa988782c75270561 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 ff3761507f2025fd1e652afee03a18de3508676a..af33bd8c472f7e7bfdab52558bac379166ff2253 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 54941e5f93579db512472d324a48a9b272787b91..4b0a27dc94313b021e56bef61671f95a31074dc7 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 015af82ab82c3676a7b80c01b83eaf61ee28b61b..f44e9f04e083d48e4a90d8d8e8b5cc199bf9f351 100644 --- a/net/minecraft/world/entity/monster/Slime.java +++ b/net/minecraft/world/entity/monster/Slime.java @@ -133,6 +133,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 c2bcf769a85a28616472b050cd09d3d6cc60e81f..e7bd63256979e41670772c3c5293c9a637593541 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 b5465b552c5aea7603a54cfdeafe451bfaf38bf2..e4ae604d4d0756edc9418634d9958338997c8203 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 309cdc88d98eaf61691bc1594275250f55b4f30c..7b19d64d6b1d61922a2368e38f2b31a42ea29a1a 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 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); @@ -389,7 +389,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 43de5ca497f5e3ac3d64345cb998f392852e6e3b..bc8727a4ae3f1f30f4de5ab81a79c15a8153e34a 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 01a5357d5359394b61f2456fdee8bf3aadf0ca32..50da0e9246f50be6073e26c8fa042fe2b4eabb32 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 2ff6ae7e1c809fa6607cf4d8685ba9b8ac46064c..e90ac2c977555793ee8c25f04ec3c33b0332d312 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 213530a2378411db2bc597ba7e0bb68cfdb3ebc9..ef2a7fdc8abe05b7718b71e23556258aba392c75 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 9f5db385dabb01bda033aecaebd1d9b7c9e2ed0b..7cb2bc8b126a0027216ec4afd7f6e54fe328b8be 100644 --- a/net/minecraft/world/entity/monster/Zoglin.java +++ b/net/minecraft/world/entity/monster/Zoglin.java @@ -111,6 +111,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 02073d4374580278829e680b875d596844213e78..7f9ee637f443f55ae901d1a0aebedd8f7411996d 100644 --- a/net/minecraft/world/entity/monster/Zombie.java +++ b/net/minecraft/world/entity/monster/Zombie.java @@ -143,6 +143,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 6bd633390df582e0b1999f5c67cd76e2b23a04eb..c6e460c21af6145321cad527112adc15e9f30d8d 100644 --- a/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/net/minecraft/world/entity/monster/ZombieVillager.java @@ -123,6 +123,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 a8916a8fe5bed57e7b1f755a20e15bed544567fb..34e259b95abfc514e07584a699ecc80de0014250 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 df763444e9935b8f43ea65b3695c715993903fb8..ee2cd8bfb74dead58f77f9755f306aa7166285fd 100644 --- a/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/net/minecraft/world/entity/monster/hoglin/Hoglin.java @@ -127,6 +127,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 8d37820522b12f2e513ca38c6ccdbb6ef3c2fc71..0059e926f09317e056f3f722c4ca775c43bc0b86 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 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 f52aba35ee7e202074cda8fb4dfd6a7d9ded1f09..f4893cc54d7f144025da0057beedb3a974c80dc1 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 2846aca7bad55b56430738baeee9554e34da316c..654935f2994c588c8545c21d6de839711c55cdfc 100644 --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java @@ -281,6 +281,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 e726893a3ddf49bdfd2d190477bccf6e33de1847..7ad6a8479a0bdda570ac286220eacd0ba8642111 100644 --- a/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/net/minecraft/world/entity/npc/WanderingTrader.java @@ -97,6 +97,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));