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/ambient/Bat.java b/net/minecraft/world/entity/ambient/Bat.java index a09b5035e91d50e12f613a7a1211c6869fbbf4df..e83900f8d6adbe8a48294f250bd6cc6e3fad8160 100644 --- a/net/minecraft/world/entity/ambient/Bat.java +++ b/net/minecraft/world/entity/ambient/Bat.java @@ -109,6 +109,13 @@ public class Bat extends AmbientCreature { } // Purpur end - Configurable entity base attributes + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.batTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @Override public boolean isFlapping() { return !this.isResting() && this.tickCount % 10.0F == 0.0F; diff --git a/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/net/minecraft/world/entity/animal/axolotl/Axolotl.java index 79dfebbd72424d5a3a13d4ba89a555fdf782e703..947160c4dfc4e50bb75a1a797cb2f22602b22643 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/bee/Bee.java b/net/minecraft/world/entity/animal/bee/Bee.java index 473aa29e3075fcab44a14c2bc14d3f222b55cbad..e57200d6560a38cbecd681a30b75409412fce170 100644 --- a/net/minecraft/world/entity/animal/bee/Bee.java +++ b/net/minecraft/world/entity/animal/bee/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); @@ -492,6 +492,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 long getPersistentAngerEndTime() { return this.entityData.get(DATA_ANGER_END_TIME); diff --git a/net/minecraft/world/entity/animal/chicken/Chicken.java b/net/minecraft/world/entity/animal/chicken/Chicken.java index 029fe4ac952d9f56824de346d98b341bd0b9b65f..6308bb606b34d781e315f56a55e6544b3c156d85 100644 --- a/net/minecraft/world/entity/animal/chicken/Chicken.java +++ b/net/minecraft/world/entity/animal/chicken/Chicken.java @@ -110,6 +110,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/cow/Cow.java b/net/minecraft/world/entity/animal/cow/Cow.java index 400b0a0a99590e3590cb66724acdc5ba9170f2c4..bb8c75d20e6a1300d68ae75233962bdc26736c77 100644 --- a/net/minecraft/world/entity/animal/cow/Cow.java +++ b/net/minecraft/world/entity/animal/cow/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/cow/MushroomCow.java b/net/minecraft/world/entity/animal/cow/MushroomCow.java index e2aa027dc7a39fa8a8868a7d153e838113fcf97b..a8e6e703a51130066547724dd08bdfe5e11c99e5 100644 --- a/net/minecraft/world/entity/animal/cow/MushroomCow.java +++ b/net/minecraft/world/entity/animal/cow/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/dolphin/Dolphin.java b/net/minecraft/world/entity/animal/dolphin/Dolphin.java index 94f92080de46f2af67e1d28753208691da534ddf..d73789bb8ce0f65be94437484c3ed41e26cd7510 100644 --- a/net/minecraft/world/entity/animal/dolphin/Dolphin.java +++ b/net/minecraft/world/entity/animal/dolphin/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 + @Override public @Nullable SpawnGroupData finalizeSpawn( ServerLevelAccessor level, DifficultyInstance difficulty, EntitySpawnReason spawnReason, @Nullable SpawnGroupData spawnGroupData diff --git a/net/minecraft/world/entity/animal/equine/Donkey.java b/net/minecraft/world/entity/animal/equine/Donkey.java index d74a5cc2a43ef41fd00676bbd17fe4df9edb67ff..6cf6853c244b7589d2a57e7ae77933d4a1503ccd 100644 --- a/net/minecraft/world/entity/animal/equine/Donkey.java +++ b/net/minecraft/world/entity/animal/equine/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/equine/Horse.java b/net/minecraft/world/entity/animal/equine/Horse.java index ba9df659ed019f9e58991059fe99c1471bfc94d8..1c17ab94901ce1c6370670c06bf0801ee6b5b393 100644 --- a/net/minecraft/world/entity/animal/equine/Horse.java +++ b/net/minecraft/world/entity/animal/equine/Horse.java @@ -81,6 +81,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/equine/Llama.java b/net/minecraft/world/entity/animal/equine/Llama.java index 960e48f5ae63d8c86758d2573510bf481ca4bca0..eb2fc0e6d497241f1b4f3971155b10d14f5427f8 100644 --- a/net/minecraft/world/entity/animal/equine/Llama.java +++ b/net/minecraft/world/entity/animal/equine/Llama.java @@ -159,6 +159,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/equine/Mule.java b/net/minecraft/world/entity/animal/equine/Mule.java index 180a807026437e949e3f7c3d59864ea328f6f03f..9bafe3e204b3e4624a95b130552c8230c0835a30 100644 --- a/net/minecraft/world/entity/animal/equine/Mule.java +++ b/net/minecraft/world/entity/animal/equine/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/equine/SkeletonHorse.java b/net/minecraft/world/entity/animal/equine/SkeletonHorse.java index af0e326f5ff8fcb82353bac3143103928a6a08e6..3865937e4a56636cde44f7d8f16873ae16512323 100644 --- a/net/minecraft/world/entity/animal/equine/SkeletonHorse.java +++ b/net/minecraft/world/entity/animal/equine/SkeletonHorse.java @@ -74,6 +74,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/equine/TraderLlama.java b/net/minecraft/world/entity/animal/equine/TraderLlama.java index 65ac46335d642d5dd8c01623721257a4fd53441d..4c07cd57aa3518adb4bc9b1213cc572a5b81f935 100644 --- a/net/minecraft/world/entity/animal/equine/TraderLlama.java +++ b/net/minecraft/world/entity/animal/equine/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/equine/ZombieHorse.java b/net/minecraft/world/entity/animal/equine/ZombieHorse.java index fa2f18470123f98e336ab5c94bc791e9333356cb..b770d3118452b0b7a362b1f541bb602f4d3cbcec 100644 --- a/net/minecraft/world/entity/animal/equine/ZombieHorse.java +++ b/net/minecraft/world/entity/animal/equine/ZombieHorse.java @@ -88,6 +88,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, 25.0); } diff --git a/net/minecraft/world/entity/animal/feline/Cat.java b/net/minecraft/world/entity/animal/feline/Cat.java index d0aa698ef99cf3b1926018314b4067cc1cd8ac2a..92b67565485b2fade3e80fb4b944edfc12d9e0a2 100644 --- a/net/minecraft/world/entity/animal/feline/Cat.java +++ b/net/minecraft/world/entity/animal/feline/Cat.java @@ -135,6 +135,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/feline/Ocelot.java b/net/minecraft/world/entity/animal/feline/Ocelot.java index bf281fd4c050b87fd277ab68e812ab2dcd3d06aa..13272516003f763d2c69dc599c8ff7696bec718b 100644 --- a/net/minecraft/world/entity/animal/feline/Ocelot.java +++ b/net/minecraft/world/entity/animal/feline/Ocelot.java @@ -98,6 +98,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/fish/Cod.java b/net/minecraft/world/entity/animal/fish/Cod.java index e00e623d7df9e179d8bb5ee4812538578c5f4c08..8655aae805f239cbd049065232293854b18c73cf 100644 --- a/net/minecraft/world/entity/animal/fish/Cod.java +++ b/net/minecraft/world/entity/animal/fish/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/fish/Pufferfish.java b/net/minecraft/world/entity/animal/fish/Pufferfish.java index b2932aeb6000a4e268db12cb7b05be746788569c..4d21718441b0272774ec69e9b72a180fe417cbb0 100644 --- a/net/minecraft/world/entity/animal/fish/Pufferfish.java +++ b/net/minecraft/world/entity/animal/fish/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/fish/Salmon.java b/net/minecraft/world/entity/animal/fish/Salmon.java index 97194d5c844bf96ba431c12ccc1a82cb8944c52b..424bd56ec9df8bd0a80d2fa79bc4f482eae2ab5c 100644 --- a/net/minecraft/world/entity/animal/fish/Salmon.java +++ b/net/minecraft/world/entity/animal/fish/Salmon.java @@ -59,6 +59,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/fish/TropicalFish.java b/net/minecraft/world/entity/animal/fish/TropicalFish.java index 8ffb253c114d882c9459f74a27bd8a086ae82f01..04c30c60c76122018fa69cf1f3f64cae8ed62fad 100644 --- a/net/minecraft/world/entity/animal/fish/TropicalFish.java +++ b/net/minecraft/world/entity/animal/fish/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/fox/Fox.java b/net/minecraft/world/entity/animal/fox/Fox.java index a0ed30e8ccd41729de8e0ff977a61fa607386640..bc119c2f61adb6c6122119fda1df437bab40f9b4 100644 --- a/net/minecraft/world/entity/animal/fox/Fox.java +++ b/net/minecraft/world/entity/animal/fox/Fox.java @@ -204,6 +204,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/goat/Goat.java b/net/minecraft/world/entity/animal/goat/Goat.java index 07ba57ae845024e0f2fa03a68e126ec79bfc6b15..e5f5bc2c4b4f36e0e911b2c5ef67ef6e0d4cd0b1 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/golem/CopperGolem.java b/net/minecraft/world/entity/animal/golem/CopperGolem.java index e3c5b6fe7d6cdb674fbf5ac22001c3d917bf91ec..2d0ce5d420f88a95eda34a3fe81c815999bde300 100644 --- a/net/minecraft/world/entity/animal/golem/CopperGolem.java +++ b/net/minecraft/world/entity/animal/golem/CopperGolem.java @@ -140,6 +140,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/golem/IronGolem.java b/net/minecraft/world/entity/animal/golem/IronGolem.java index 677f584b38aeb6805db0bb867f62d5617e309f5e..d31c1f1b681922ca8f1657ffa333e8a6794e619f 100644 --- a/net/minecraft/world/entity/animal/golem/IronGolem.java +++ b/net/minecraft/world/entity/animal/golem/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/golem/SnowGolem.java b/net/minecraft/world/entity/animal/golem/SnowGolem.java index f011369a67809d54230984a22a909bfea44f47f3..0fe7f18390490ccf4e944ac3378150ebcc53991d 100644 --- a/net/minecraft/world/entity/animal/golem/SnowGolem.java +++ b/net/minecraft/world/entity/animal/golem/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/happyghast/HappyGhast.java b/net/minecraft/world/entity/animal/happyghast/HappyGhast.java index 30204224ed83f6d3cfd64640b332b23cb74d379f..828793aaa2992fd1077040309154f814b302476a 100644 --- a/net/minecraft/world/entity/animal/happyghast/HappyGhast.java +++ b/net/minecraft/world/entity/animal/happyghast/HappyGhast.java @@ -153,6 +153,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/panda/Panda.java b/net/minecraft/world/entity/animal/panda/Panda.java index 163fe697f57459b36885fa3a18f41370347cab38..e9aa07dea0515f53a08a7066fa9e23e0ee69d69e 100644 --- a/net/minecraft/world/entity/animal/panda/Panda.java +++ b/net/minecraft/world/entity/animal/panda/Panda.java @@ -150,6 +150,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/Parrot.java b/net/minecraft/world/entity/animal/parrot/Parrot.java index 0d62046cb33ed750ab27229fe4f0b43c3a1dd5f4..e97782bc8232120d4e7d1feeb8ca87fd37a1fcf9 100644 --- a/net/minecraft/world/entity/animal/parrot/Parrot.java +++ b/net/minecraft/world/entity/animal/parrot/Parrot.java @@ -214,6 +214,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 + @Override public @Nullable SpawnGroupData finalizeSpawn( ServerLevelAccessor level, DifficultyInstance difficulty, EntitySpawnReason spawnReason, @Nullable SpawnGroupData spawnGroupData diff --git a/net/minecraft/world/entity/animal/pig/Pig.java b/net/minecraft/world/entity/animal/pig/Pig.java index 0cb09a058c2d21b10677482792b230464ed9f951..020932539727739b54ed2f7899cbf11ad940f4df 100644 --- a/net/minecraft/world/entity/animal/pig/Pig.java +++ b/net/minecraft/world/entity/animal/pig/Pig.java @@ -95,6 +95,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/PolarBear.java b/net/minecraft/world/entity/animal/polarbear/PolarBear.java index 97edd950e2142e73ad947590c99d6d5529cbd44c..13d26a6981d6907f35f1f2bde93934c7c1fe8120 100644 --- a/net/minecraft/world/entity/animal/polarbear/PolarBear.java +++ b/net/minecraft/world/entity/animal/polarbear/PolarBear.java @@ -133,6 +133,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 + @Override public @Nullable AgeableMob getBreedOffspring(ServerLevel level, AgeableMob partner) { return EntityType.POLAR_BEAR.create(level, EntitySpawnReason.BREEDING); diff --git a/net/minecraft/world/entity/animal/rabbit/Rabbit.java b/net/minecraft/world/entity/animal/rabbit/Rabbit.java index 66fda64006c0a70ab4502f088637bb6871c3bb37..b1c72047f7aa63f62b0ad0274811b587b1d3486b 100644 --- a/net/minecraft/world/entity/animal/rabbit/Rabbit.java +++ b/net/minecraft/world/entity/animal/rabbit/Rabbit.java @@ -163,6 +163,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/sheep/Sheep.java b/net/minecraft/world/entity/animal/sheep/Sheep.java index 0e4505474a50d57338c16648cb6049d35455fdc6..7eca49c9237c61ab12f60ff16085aa8fd10c99ac 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/squid/GlowSquid.java b/net/minecraft/world/entity/animal/squid/GlowSquid.java index 7d41aaa0546a9ca02e46ce46e61ecc57120bfca9..2aa2a84a7ada369c45a85119a933eb92297af4dc 100644 --- a/net/minecraft/world/entity/animal/squid/GlowSquid.java +++ b/net/minecraft/world/entity/animal/squid/GlowSquid.java @@ -57,6 +57,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/animal/squid/Squid.java b/net/minecraft/world/entity/animal/squid/Squid.java index 5e4181f95711c6b0299f28de14d95da421dda373..e307ebfb8b2781b6175b520e148e6bd58d2b9dc4 100644 --- a/net/minecraft/world/entity/animal/squid/Squid.java +++ b/net/minecraft/world/entity/animal/squid/Squid.java @@ -101,6 +101,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/turtle/Turtle.java b/net/minecraft/world/entity/animal/turtle/Turtle.java index fce1b1a22e091a1c05650c72e1ceb83e1a1d1ed1..7d5987fe641646ecbf8e389d57a0a9a04e9c0959 100644 --- a/net/minecraft/world/entity/animal/turtle/Turtle.java +++ b/net/minecraft/world/entity/animal/turtle/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/wolf/Wolf.java b/net/minecraft/world/entity/animal/wolf/Wolf.java index 08a1bafa0e45dbdbf8bdc4d5cb654d080590707d..20f945ee06bcdb4736e6d3a8b20a5cbd3d79df0f 100644 --- a/net/minecraft/world/entity/animal/wolf/Wolf.java +++ b/net/minecraft/world/entity/animal/wolf/Wolf.java @@ -223,6 +223,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 e14347ccc7b21213801e59fa2e0e47964bc943ad..5efddef6e48bf28aa75041c291d954bbad527726 100644 --- a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java @@ -170,6 +170,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 73dbc5ae28c5af00a36528e0397ad1c2eed14f2c..ef6dcc8183d9963d1e683f2cc74fec6443d175a9 100644 --- a/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/net/minecraft/world/entity/boss/wither/WitherBoss.java @@ -221,6 +221,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 4cd7975a8e9e55d6b6ded0b7e13d8da436e49c6c..e2afd7677986c70dd924017e8822fd6abd808f48 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/Creeper.java b/net/minecraft/world/entity/monster/Creeper.java index ed1ccd712a2fe00740beeee4fe615976258f5c6c..b0ed96c243f9abb3868d92bb513ad1620aa8e269 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/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 79a1d8f67a22a8fa4a6c3b657e44bb9503687c27..47c621f01658f3392b58f3f5c1f31bd539f63dd6 100644 --- a/net/minecraft/world/entity/monster/EnderMan.java +++ b/net/minecraft/world/entity/monster/EnderMan.java @@ -86,7 +86,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 @@ -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 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/Ghast.java b/net/minecraft/world/entity/monster/Ghast.java index 7d97c00ae49629b97104631317aa6174741cdd5e..443eb9f12d6df950c59c9d4db4853087fd23d24e 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 40cf8f44a6b01d45306dab4ba4f9a7ea7c6590a9..f1176f73d4468b2f39e48fe5454c5f5bf481afd9 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 1eaa4f255b01eddc93ddbc5615ad05e7d8273581..9948511659de9222a19f6b9f660e4441ea98a4a9 100644 --- a/net/minecraft/world/entity/monster/Guardian.java +++ b/net/minecraft/world/entity/monster/Guardian.java @@ -97,6 +97,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/MagmaCube.java b/net/minecraft/world/entity/monster/MagmaCube.java index e0fda9a975e00c49ba09db65d7b3fba8fa434757..1bf9d04e5e44272b02753290995795f194cbdae1 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 6e8fe1b694ade45ffbf0b9bb39b954deffeb2402..2fa22088ac507eceb36f3c77f24a733076641d8f 100644 --- a/net/minecraft/world/entity/monster/Phantom.java +++ b/net/minecraft/world/entity/monster/Phantom.java @@ -128,6 +128,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/Ravager.java b/net/minecraft/world/entity/monster/Ravager.java index 7c69423eee05992b9c70321d528cc9d73b3e63ea..ad2913b02ded9b5087c69ba279cebfd81d9ef75e 100644 --- a/net/minecraft/world/entity/monster/Ravager.java +++ b/net/minecraft/world/entity/monster/Ravager.java @@ -103,6 +103,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 30f2503ebd045b05f5594cef28389a694338d13a..0a5a6f23cd8e4317db4e7c0ba8883e99f3aff148 100644 --- a/net/minecraft/world/entity/monster/Shulker.java +++ b/net/minecraft/world/entity/monster/Shulker.java @@ -133,6 +133,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 3e8e3a6018120576b0773769db7b2037148fae96..1692e7c93234506e22039da071e9c8e8a8567495 100644 --- a/net/minecraft/world/entity/monster/Silverfish.java +++ b/net/minecraft/world/entity/monster/Silverfish.java @@ -65,6 +65,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/Slime.java b/net/minecraft/world/entity/monster/Slime.java index f93a2c58b5835e9ce8318d28e944533ef69df8ef..c4222e17d9a1f4cba6a74099a167cff13856f3e3 100644 --- a/net/minecraft/world/entity/monster/Slime.java +++ b/net/minecraft/world/entity/monster/Slime.java @@ -135,6 +135,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/Strider.java b/net/minecraft/world/entity/monster/Strider.java index ad6515c2dcde0079095c6777f56319e9901850f8..758887f3fcec2bf0946cddb184e19a1c9b64eee3 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); @@ -388,7 +388,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 32759864a8ff0c4e28ce80ae8906cbcf1927094e..6ead673c44891c6b1c1688f80bf299527d7bc777 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/Witch.java b/net/minecraft/world/entity/monster/Witch.java index 3c3c258d4cc7cf7376d0d3ad0794ec3611ab81ce..86d9952ed0f692e8f229b0c0bcb6cacf53a00c8b 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/Zoglin.java b/net/minecraft/world/entity/monster/Zoglin.java index e0192a13b8d7131024471569bf34329ba0f28287..e2708eb836d60588c1bedb75c520e5007185034a 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/hoglin/Hoglin.java b/net/minecraft/world/entity/monster/hoglin/Hoglin.java index 4498fe26dff2cdec8e90d6559a66ebe7859195bb..5e3f7005a7167c786038823a8437ad2e90a41d2c 100644 --- a/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/net/minecraft/world/entity/monster/hoglin/Hoglin.java @@ -129,6 +129,13 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { } // Purpur end - Make entity breeding times configurable + // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.hoglinTakeDamageFromWater; + } + // Purpur end - Toggle for water sensitive mob damage + @VisibleForTesting public void setTimeInOverworld(int timeInOverworld) { this.timeInOverworld = timeInOverworld; diff --git a/net/minecraft/world/entity/monster/illager/Evoker.java b/net/minecraft/world/entity/monster/illager/Evoker.java index 334786b2c358c41058f2ac4b1fa4b185833cbd84..c4f45f6303a46ad54991c9013608a4e5ba8b9fee 100644 --- a/net/minecraft/world/entity/monster/illager/Evoker.java +++ b/net/minecraft/world/entity/monster/illager/Evoker.java @@ -74,6 +74,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/illager/Illusioner.java b/net/minecraft/world/entity/monster/illager/Illusioner.java index 8fa53cccb73b2d8c599c898f298681735007d2a0..32278f51f4973d1294e52f0775697e9f5b295ee0 100644 --- a/net/minecraft/world/entity/monster/illager/Illusioner.java +++ b/net/minecraft/world/entity/monster/illager/Illusioner.java @@ -86,6 +86,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/illager/Pillager.java b/net/minecraft/world/entity/monster/illager/Pillager.java index 1e43c69366287c7a191a6f8e3a7d5459743f07a2..6190286ab2f454382d497b4fce47632e6f771215 100644 --- a/net/minecraft/world/entity/monster/illager/Pillager.java +++ b/net/minecraft/world/entity/monster/illager/Pillager.java @@ -90,6 +90,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/illager/Vindicator.java b/net/minecraft/world/entity/monster/illager/Vindicator.java index 5f3857186e86e27fe237c62cec4af13ebf58debe..86b463a16e8630af4918ea43a2546995aa00244f 100644 --- a/net/minecraft/world/entity/monster/illager/Vindicator.java +++ b/net/minecraft/world/entity/monster/illager/Vindicator.java @@ -82,6 +82,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/piglin/Piglin.java b/net/minecraft/world/entity/monster/piglin/Piglin.java index 4fccd122a227e5fe80965c37afaa031c4a673978..d6c834914ddea76280466bf0f7d001a76af34f08 100644 --- a/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/net/minecraft/world/entity/monster/piglin/Piglin.java @@ -166,6 +166,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 3d34bef7ffe9e66e77e3fc10b2c5869d98a4a5c9..4bf2038fea712e65f420ade915a18470b79318fc 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/monster/skeleton/Skeleton.java b/net/minecraft/world/entity/monster/skeleton/Skeleton.java index 96d989cffc6ff72954ed92e2535c72992d489372..30d79be765118a50e2e2c5bfde6bf6bbc957cf40 100644 --- a/net/minecraft/world/entity/monster/skeleton/Skeleton.java +++ b/net/minecraft/world/entity/monster/skeleton/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/skeleton/Stray.java b/net/minecraft/world/entity/monster/skeleton/Stray.java index 575f30cc9a6166a4e0733cc33e8b5814acb92660..ec19c49d195daff5839c991cce63b1ffc15a7e0b 100644 --- a/net/minecraft/world/entity/monster/skeleton/Stray.java +++ b/net/minecraft/world/entity/monster/skeleton/Stray.java @@ -47,6 +47,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/skeleton/WitherSkeleton.java b/net/minecraft/world/entity/monster/skeleton/WitherSkeleton.java index f38bb54c0f5d7797179e5e75eb8092baea7b9dcb..3e8cc658b333f1259784e1426896ac8b8c1537fa 100644 --- a/net/minecraft/world/entity/monster/skeleton/WitherSkeleton.java +++ b/net/minecraft/world/entity/monster/skeleton/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/spider/CaveSpider.java b/net/minecraft/world/entity/monster/spider/CaveSpider.java index a1391173cc4997df723c59f176726dde88491978..fad3e951e443f04f5bf0423cde42c0ae299a4236 100644 --- a/net/minecraft/world/entity/monster/spider/CaveSpider.java +++ b/net/minecraft/world/entity/monster/spider/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/spider/Spider.java b/net/minecraft/world/entity/monster/spider/Spider.java index 6a9c807ed50dab4b65787d9f7269385103fa5f26..81c500de41b11d4aa6c52dc290f132ad2c23f009 100644 --- a/net/minecraft/world/entity/monster/spider/Spider.java +++ b/net/minecraft/world/entity/monster/spider/Spider.java @@ -77,6 +77,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/zombie/Drowned.java b/net/minecraft/world/entity/monster/zombie/Drowned.java index 327086c972423e4f73402ea2e64519a355fa7b5a..ec36b854dccae7cef905aeb2fcd4ec177828139c 100644 --- a/net/minecraft/world/entity/monster/zombie/Drowned.java +++ b/net/minecraft/world/entity/monster/zombie/Drowned.java @@ -126,6 +126,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/zombie/Husk.java b/net/minecraft/world/entity/monster/zombie/Husk.java index d31145fee0f646d734e90199288b29f07854d066..928e2c95146bc3fc9b8c41c5b6c3970fc919bb15 100644 --- a/net/minecraft/world/entity/monster/zombie/Husk.java +++ b/net/minecraft/world/entity/monster/zombie/Husk.java @@ -75,6 +75,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 + @Override public boolean isSunSensitive() { return false; diff --git a/net/minecraft/world/entity/monster/zombie/Zombie.java b/net/minecraft/world/entity/monster/zombie/Zombie.java index 638642628c3dc9fa25d25c589029219c23d1e602..dfdf9ee98a25ec1f7a1f41326c98155131494d93 100644 --- a/net/minecraft/world/entity/monster/zombie/Zombie.java +++ b/net/minecraft/world/entity/monster/zombie/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/zombie/ZombieVillager.java b/net/minecraft/world/entity/monster/zombie/ZombieVillager.java index 62f55763d95e496da8b8fcf7d95752777e323b48..3da4f757d879f8b855c5d36688f1f5dd50fc88a0 100644 --- a/net/minecraft/world/entity/monster/zombie/ZombieVillager.java +++ b/net/minecraft/world/entity/monster/zombie/ZombieVillager.java @@ -131,6 +131,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/zombie/ZombifiedPiglin.java b/net/minecraft/world/entity/monster/zombie/ZombifiedPiglin.java index ec39ad6740361774f9ecfda7186cab9d8fac90f2..9a1da88752b0dd708365dd41a074cc0e90f36e1c 100644 --- a/net/minecraft/world/entity/monster/zombie/ZombifiedPiglin.java +++ b/net/minecraft/world/entity/monster/zombie/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 protected void addBehaviourGoals() { this.goalSelector.addGoal(1, new SpearUseGoal<>(this, 1.0, 1.0, 10.0F, 2.0F)); diff --git a/net/minecraft/world/entity/npc/villager/Villager.java b/net/minecraft/world/entity/npc/villager/Villager.java index ed6642023fccbc8f825d7c5c206d73ffd666f0f9..b6bfe06a2ad8e4219d99de050b30ce1ad15b8b34 100644 --- a/net/minecraft/world/entity/npc/villager/Villager.java +++ b/net/minecraft/world/entity/npc/villager/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/WanderingTrader.java b/net/minecraft/world/entity/npc/wanderingtrader/WanderingTrader.java index c6c4f4f2a970db7e782181eaca312931b192b0d5..cabebbc25788a8c41912f97dac85af41c9433b68 100644 --- a/net/minecraft/world/entity/npc/wanderingtrader/WanderingTrader.java +++ b/net/minecraft/world/entity/npc/wanderingtrader/WanderingTrader.java @@ -99,6 +99,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));