Files
Purpur/purpur-server/minecraft-patches/features/0017-Toggle-for-water-sensitive-mob-damage.patch
granny baa196f538 Updated Upstream (Paper)
Upstream has released updates that appear to apply and compile correctly

Paper Changes:
PaperMC/Paper@a24f9b20 1.21.6 dev
PaperMC/Paper@457a0a69 Bump version string and protocol version to 1.21.6 release
PaperMC/Paper@245b5473 Update base to 1.21.6
PaperMC/Paper@b28d77b3 Update Moonrise to 1.21.6
PaperMC/Paper@8318dcb7 Update DataConverter to 1.21.6-rc1
2025-06-17 12:49:23 -07:00

1355 lines
63 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: YouHaveTrouble <garrenpolska@gmail.com>
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 1896f91e10a5e17332836d5354813a18a4dfe6dc..1c446cec71aa163374ab9832c961a6b4c3fc534b 100644
--- a/net/minecraft/world/entity/GlowSquid.java
+++ b/net/minecraft/world/entity/GlowSquid.java
@@ -54,6 +54,13 @@ public class GlowSquid extends Squid {
}
// Purpur end - Configurable entity base attributes
+ // Purpur start - Toggle for water sensitive mob damage
+ @Override
+ public boolean isSensitiveToWater() {
+ return this.level().purpurConfig.glowSquidTakeDamageFromWater;
+ }
+ // Purpur end - Toggle for water sensitive mob damage
+
@Override
protected ParticleOptions getInkParticle() {
return ParticleTypes.GLOW_SQUID_INK;
diff --git a/net/minecraft/world/entity/ambient/Bat.java b/net/minecraft/world/entity/ambient/Bat.java
index d25da9a9560ce171df3ada22756e4c54a91ff378..2d2b44f2617732bcdfd969454f80b9ad4af470a1 100644
--- a/net/minecraft/world/entity/ambient/Bat.java
+++ b/net/minecraft/world/entity/ambient/Bat.java
@@ -111,6 +111,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 11a7cbb1781e396ecb2b9fdbad7af2c55ea2606a..31a9451417272ec5bb6a6cbc3ec308f6c5cd057f 100644
--- a/net/minecraft/world/entity/animal/Bee.java
+++ b/net/minecraft/world/entity/animal/Bee.java
@@ -182,7 +182,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);
@@ -488,6 +488,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 5e6a66c1a3532d39dae82eaeb2428605536e2155..41f303078b2e1f0460215fbfe27ff06fd5783c35 100644
--- a/net/minecraft/world/entity/animal/Cat.java
+++ b/net/minecraft/world/entity/animal/Cat.java
@@ -132,6 +132,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 e4702a5a89147bd83fa73a969fab7077ddd623f6..58f7690a05febac5c57ba7ea2aff93b7d94a4291 100644
--- a/net/minecraft/world/entity/animal/Chicken.java
+++ b/net/minecraft/world/entity/animal/Chicken.java
@@ -109,6 +109,13 @@ public class Chicken extends Animal {
}
// Purpur end - Make entity breeding times configurable
+ // Purpur start - Toggle for water sensitive mob damage
+ @Override
+ public boolean isSensitiveToWater() {
+ return this.level().purpurConfig.chickenTakeDamageFromWater;
+ }
+ // Purpur end - Toggle for water sensitive mob damage
+
@Override
protected void registerGoals() {
this.goalSelector.addGoal(0, new FloatGoal(this));
diff --git a/net/minecraft/world/entity/animal/Cod.java b/net/minecraft/world/entity/animal/Cod.java
index 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 753ed26cc6bfc8276d4405091b78b0e50182b84a..d584ffe3cc8dfb5fd4ce352b1da18af6a143d575 100644
--- a/net/minecraft/world/entity/animal/Cow.java
+++ b/net/minecraft/world/entity/animal/Cow.java
@@ -61,6 +61,13 @@ public class Cow extends AbstractCow {
}
// Purpur end - Make entity breeding times configurable
+ // Purpur start - Toggle for water sensitive mob damage
+ @Override
+ public boolean isSensitiveToWater() {
+ return this.level().purpurConfig.cowTakeDamageFromWater;
+ }
+ // Purpur end - Toggle for water sensitive mob damage
+
@Override
protected void defineSynchedData(SynchedEntityData.Builder builder) {
super.defineSynchedData(builder);
diff --git a/net/minecraft/world/entity/animal/Dolphin.java b/net/minecraft/world/entity/animal/Dolphin.java
index c8ed91c1902261d6b15744e1fbe1bf7f861b51a8..cff87e0047167751d9b4672a0caae642f15426a9 100644
--- a/net/minecraft/world/entity/animal/Dolphin.java
+++ b/net/minecraft/world/entity/animal/Dolphin.java
@@ -159,6 +159,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 07767c9d649e7ef2b8fd8e3ac62d99ce13271fe4..23e119ce82c3a0541b40249b20f133e39fac6858 100644
--- a/net/minecraft/world/entity/animal/Fox.java
+++ b/net/minecraft/world/entity/animal/Fox.java
@@ -195,6 +195,13 @@ public class Fox extends Animal {
}
// Purpur end - Make entity breeding times configurable
+ // Purpur start - Toggle for water sensitive mob damage
+ @Override
+ public boolean isSensitiveToWater() {
+ return this.level().purpurConfig.foxTakeDamageFromWater;
+ }
+ // Purpur end - Toggle for water sensitive mob damage
+
@Override
protected void defineSynchedData(SynchedEntityData.Builder builder) {
super.defineSynchedData(builder);
diff --git a/net/minecraft/world/entity/animal/HappyGhast.java b/net/minecraft/world/entity/animal/HappyGhast.java
index 136b918f053cacbc4fa60b0ed434619c5e07adf5..60073e503d6e52160e6d4e037b128bdeb6d56073 100644
--- a/net/minecraft/world/entity/animal/HappyGhast.java
+++ b/net/minecraft/world/entity/animal/HappyGhast.java
@@ -147,6 +147,13 @@ public class HappyGhast extends Animal {
}
// Purpur end - Make entity breeding times configurable
+ // Purpur start - Toggle for water sensitive mob damage
+ @Override
+ public boolean isSensitiveToWater() {
+ return this.level().purpurConfig.happyGhastTakeDamageFromWater;
+ }
+ // Purpur end - Toggle for water sensitive mob damage
+
@Override
protected void ageBoundaryReached() {
if (this.isBaby()) {
diff --git a/net/minecraft/world/entity/animal/IronGolem.java b/net/minecraft/world/entity/animal/IronGolem.java
index 1cb7e0985a59e83f118d4656e94a79f4d81836ff..006df1758bdaeb55a7db938afd9e00c575a62e60 100644
--- a/net/minecraft/world/entity/animal/IronGolem.java
+++ b/net/minecraft/world/entity/animal/IronGolem.java
@@ -100,6 +100,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 3e4cb7680e6082ebab95e2b8307eedb0d3fcfbcd..298cd49b28b5efb0f6401c19fc083a3714cb9aeb 100644
--- a/net/minecraft/world/entity/animal/MushroomCow.java
+++ b/net/minecraft/world/entity/animal/MushroomCow.java
@@ -93,6 +93,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 c4ed3f906d4b47c07915afd07db7a731e99b7215..d92af280d85856d57f3031dfaf7c644cbfc18f15 100644
--- a/net/minecraft/world/entity/animal/Ocelot.java
+++ b/net/minecraft/world/entity/animal/Ocelot.java
@@ -96,6 +96,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 c7686698a9615a51c653658cf6a46ccfb9c4d168..4678f432b6a8f74bbd121aee41f1b093888946f7 100644
--- a/net/minecraft/world/entity/animal/Panda.java
+++ b/net/minecraft/world/entity/animal/Panda.java
@@ -149,6 +149,13 @@ public class Panda extends Animal {
}
// Purpur end - Make entity breeding times configurable
+ // Purpur start - Toggle for water sensitive mob damage
+ @Override
+ public boolean isSensitiveToWater() {
+ return this.level().purpurConfig.pandaTakeDamageFromWater;
+ }
+ // Purpur end - Toggle for water sensitive mob damage
+
@Override
protected boolean canDispenserEquipIntoSlot(EquipmentSlot slot) {
return slot == EquipmentSlot.MAINHAND && this.canPickUpLoot();
diff --git a/net/minecraft/world/entity/animal/Parrot.java b/net/minecraft/world/entity/animal/Parrot.java
index 6019406d7c7e51c53d8822e44070e626091495af..92f43418e5b21eb2a323a12649a96e0f62764618 100644
--- a/net/minecraft/world/entity/animal/Parrot.java
+++ b/net/minecraft/world/entity/animal/Parrot.java
@@ -208,6 +208,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 885135fb301eeb6149aa53d581b4073d3724264d..6f318222011e3bc57c4f0b92c0fba1f410a1d65e 100644
--- a/net/minecraft/world/entity/animal/Pig.java
+++ b/net/minecraft/world/entity/animal/Pig.java
@@ -98,6 +98,13 @@ public class Pig extends Animal implements ItemSteerable {
}
// Purpur end - Make entity breeding times configurable
+ // Purpur start - Toggle for water sensitive mob damage
+ @Override
+ public boolean isSensitiveToWater() {
+ return this.level().purpurConfig.pigTakeDamageFromWater;
+ }
+ // Purpur end - Toggle for water sensitive mob damage
+
@Override
protected void registerGoals() {
this.goalSelector.addGoal(0, new FloatGoal(this));
diff --git a/net/minecraft/world/entity/animal/PolarBear.java b/net/minecraft/world/entity/animal/PolarBear.java
index e39ca22a871c911defdbfe1cb0f1b15cde8d4612..a800acb671a18287f1407bd293a433f1fe039ce5 100644
--- a/net/minecraft/world/entity/animal/PolarBear.java
+++ b/net/minecraft/world/entity/animal/PolarBear.java
@@ -132,6 +132,13 @@ public class PolarBear extends Animal implements NeutralMob {
}
// Purpur end - Make entity breeding times configurable
+ // Purpur start - Toggle for water sensitive mob damage
+ @Override
+ public boolean isSensitiveToWater() {
+ return this.level().purpurConfig.polarBearTakeDamageFromWater;
+ }
+ // Purpur end - Toggle for water sensitive mob damage
+
@Nullable
@Override
public AgeableMob getBreedOffspring(ServerLevel level, AgeableMob otherParent) {
diff --git a/net/minecraft/world/entity/animal/Pufferfish.java b/net/minecraft/world/entity/animal/Pufferfish.java
index dbdb7f71464ccd06a04a47ace24a86e6854409fc..a9219906038a24831b3d1e6851af4225b60616c3 100644
--- a/net/minecraft/world/entity/animal/Pufferfish.java
+++ b/net/minecraft/world/entity/animal/Pufferfish.java
@@ -66,6 +66,13 @@ public class Pufferfish extends AbstractFish {
}
// Purpur end - Configurable entity base attributes
+ // Purpur start - Toggle for water sensitive mob damage
+ @Override
+ public boolean isSensitiveToWater() {
+ return this.level().purpurConfig.pufferfishTakeDamageFromWater;
+ }
+ // Purpur end - Toggle for water sensitive mob damage
+
@Override
protected void defineSynchedData(SynchedEntityData.Builder builder) {
super.defineSynchedData(builder);
diff --git a/net/minecraft/world/entity/animal/Rabbit.java b/net/minecraft/world/entity/animal/Rabbit.java
index 39154b01e23c626cc29b587ae96c611062e5b791..dcbbe3406cf481e2e1d5c4cc6baaa5ac564b1ad1 100644
--- a/net/minecraft/world/entity/animal/Rabbit.java
+++ b/net/minecraft/world/entity/animal/Rabbit.java
@@ -160,6 +160,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 e426b3280b519a3cd727b200794324361c62b67e..3c517936aee31fcf246787c033688870a2349e55 100644
--- a/net/minecraft/world/entity/animal/Salmon.java
+++ b/net/minecraft/world/entity/animal/Salmon.java
@@ -58,6 +58,13 @@ public class Salmon extends AbstractSchoolingFish {
}
// Purpur end - Configurable entity base attributes
+ // Purpur start - Toggle for water sensitive mob damage
+ @Override
+ public boolean isSensitiveToWater() {
+ return this.level().purpurConfig.salmonTakeDamageFromWater;
+ }
+ // Purpur end - Toggle for water sensitive mob damage
+
@Override
public int getMaxSchoolSize() {
return 5;
diff --git a/net/minecraft/world/entity/animal/SnowGolem.java b/net/minecraft/world/entity/animal/SnowGolem.java
index a747c4bd3a41025c6dc225e5d809ba03f57069f8..8917b3d2d75dc1a0ddf1b6dd64267f69506e80dc 100644
--- a/net/minecraft/world/entity/animal/SnowGolem.java
+++ b/net/minecraft/world/entity/animal/SnowGolem.java
@@ -125,7 +125,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM
@Override
public boolean isSensitiveToWater() {
- return true;
+ return this.level().purpurConfig.snowGolemTakeDamageFromWater; // Purpur - Toggle for water sensitive mob damage
}
@Override
diff --git a/net/minecraft/world/entity/animal/Squid.java b/net/minecraft/world/entity/animal/Squid.java
index 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 c102db5ffdfc7dcb0ec7e59fb031fe6afcdd8237..4510798913f94474b16ab6cbfa32dc0fdf0a226a 100644
--- a/net/minecraft/world/entity/animal/TropicalFish.java
+++ b/net/minecraft/world/entity/animal/TropicalFish.java
@@ -96,6 +96,13 @@ public class TropicalFish extends AbstractSchoolingFish {
}
// Purpur end - Configurable entity base attributes
+ // Purpur start - Toggle for water sensitive mob damage
+ @Override
+ public boolean isSensitiveToWater() {
+ return this.level().purpurConfig.tropicalFishTakeDamageFromWater;
+ }
+ // Purpur end - Toggle for water sensitive mob damage
+
public static String getPredefinedName(int variantId) {
return "entity.minecraft.tropical_fish.predefined." + variantId;
}
diff --git a/net/minecraft/world/entity/animal/Turtle.java b/net/minecraft/world/entity/animal/Turtle.java
index f5735e5bcc34b78db544aa8971234bc86e0ddfa9..3c2ded73af16360474fb0410456e94746393ca0e 100644
--- a/net/minecraft/world/entity/animal/Turtle.java
+++ b/net/minecraft/world/entity/animal/Turtle.java
@@ -118,6 +118,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 e32a78cb9574505d78f3e298a38a28a2422d34b3..f364117decd00f00ae0dc729addb5a35008b6ca5 100644
--- a/net/minecraft/world/entity/animal/axolotl/Axolotl.java
+++ b/net/minecraft/world/entity/animal/axolotl/Axolotl.java
@@ -154,6 +154,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 8da2cdf5a308b4c1359f94127934ee90e9cef558..952d9f5c2bb2e869df475a78b04be10e7541829e 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<Goat> 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 3678c767818abb9e4180c2ade378ca09761ad784..2928159447a87ea8cc945e73e2e81ad1dbe13680 100644
--- a/net/minecraft/world/entity/animal/horse/Horse.java
+++ b/net/minecraft/world/entity/animal/horse/Horse.java
@@ -78,6 +78,13 @@ public class Horse extends AbstractHorse {
}
// Purpur end - Make entity breeding times configurable
+ // Purpur start - Toggle for water sensitive mob damage
+ @Override
+ public boolean isSensitiveToWater() {
+ return this.level().purpurConfig.horseTakeDamageFromWater;
+ }
+ // Purpur end - Toggle for water sensitive mob damage
+
@Override
protected void randomizeAttributes(RandomSource random) {
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(generateMaxHealth(random::nextInt));
diff --git a/net/minecraft/world/entity/animal/horse/Llama.java b/net/minecraft/world/entity/animal/horse/Llama.java
index 9cfc31b9acca44c56b78ba6d935bcb6c1d6c5697..017482c8818a854b23237e27e3304498d800569d 100644
--- a/net/minecraft/world/entity/animal/horse/Llama.java
+++ b/net/minecraft/world/entity/animal/horse/Llama.java
@@ -154,6 +154,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 042b73f0807438327ebf4a2fd3a9d54d52159511..cff709a28830a842a499f7dfe3b8bc0b703c9af4 100644
--- a/net/minecraft/world/entity/animal/horse/SkeletonHorse.java
+++ b/net/minecraft/world/entity/animal/horse/SkeletonHorse.java
@@ -73,6 +73,13 @@ public class SkeletonHorse extends AbstractHorse {
}
// Purpur end - Make entity breeding times configurable
+ // Purpur start - Toggle for water sensitive mob damage
+ @Override
+ public boolean isSensitiveToWater() {
+ return this.level().purpurConfig.skeletonHorseTakeDamageFromWater;
+ }
+ // Purpur end - Toggle for water sensitive mob damage
+
public static AttributeSupplier.Builder createAttributes() {
return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0).add(Attributes.MOVEMENT_SPEED, 0.2F);
}
diff --git a/net/minecraft/world/entity/animal/horse/TraderLlama.java b/net/minecraft/world/entity/animal/horse/TraderLlama.java
index b36064e58ecc1512fed2d53c20bde333a405e8b0..81e902ba31b55722f4d257e918b56fa654083916 100644
--- a/net/minecraft/world/entity/animal/horse/TraderLlama.java
+++ b/net/minecraft/world/entity/animal/horse/TraderLlama.java
@@ -77,6 +77,13 @@ public class TraderLlama extends Llama {
}
// Purpur end - Make entity breeding times configurable
+ // Purpur start - Toggle for water sensitive mob damage
+ @Override
+ public boolean isSensitiveToWater() {
+ return this.level().purpurConfig.traderLlamaTakeDamageFromWater;
+ }
+ // Purpur end - Toggle for water sensitive mob damage
+
@Override
public boolean isTraderLlama() {
return true;
diff --git a/net/minecraft/world/entity/animal/horse/ZombieHorse.java b/net/minecraft/world/entity/animal/horse/ZombieHorse.java
index 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 1fee6d36abe42ff9998287c47d0f498bbba910e3..8394453415a0d098de6176662f97df2174a83697 100644
--- a/net/minecraft/world/entity/animal/sheep/Sheep.java
+++ b/net/minecraft/world/entity/animal/sheep/Sheep.java
@@ -94,6 +94,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 372360baedbe4f8b59e94c261bc60346ba3cfbbe..d492c6bcbc45e312a5ee2d3567a26853b514d027 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 6191a58d09fd0ca4625ecb90be78cce2049e4696..de09a91b89661118e460842453e33f383ea08a94 100644
--- a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
+++ b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
@@ -172,6 +172,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 72a7fde24a132f986318c9730aad9e4cefc70fdb..d4e4aa98e2259aa7f5dbce1585257a4e24b4782f 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 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<? extends Blaze> 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 60e420d79b73dd844bdae6c3846c6f4838fe2ca2..7ebce241a4195326bbecd158952f2ec559196ad3 100644
--- a/net/minecraft/world/entity/monster/Creeper.java
+++ b/net/minecraft/world/entity/monster/Creeper.java
@@ -265,6 +265,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 ffd9e34b4d57bdafc597b2208f754c7454afd48a..6e8ae9aa0b5051b7fb303476e52ba2cc76c29c84 100644
--- a/net/minecraft/world/entity/monster/Drowned.java
+++ b/net/minecraft/world/entity/monster/Drowned.java
@@ -123,6 +123,13 @@ public class Drowned extends Zombie implements RangedAttackMob {
}
// Purpur end - Configurable jockey options
+ // Purpur start - Toggle for water sensitive mob damage
+ @Override
+ public boolean isSensitiveToWater() {
+ return this.level().purpurConfig.drownedTakeDamageFromWater;
+ }
+ // Purpur end - Toggle for water sensitive mob damage
+
@Override
protected void addBehaviourGoals() {
this.goalSelector.addGoal(1, new Drowned.DrownedGoToWaterGoal(this, 1.0));
diff --git a/net/minecraft/world/entity/monster/ElderGuardian.java b/net/minecraft/world/entity/monster/ElderGuardian.java
index 7ebc7224d3db38cc5137112d5a74999f6e23b8d5..287b6fea404d4f1f121219f92918dc2d1c0ac780 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 002fef87101e2c98c8a091d416cb4729bd092455..73d66dffa57b31e4d772438f6d2f23cfbbcfb281 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<? extends EnderMan> 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
@@ -281,7 +281,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 2c3e44b82b396dd8e870f548f1d18d8f4b91ad1d..4565a592face29a077d96fc0cd52bceaed52f755 100644
--- a/net/minecraft/world/entity/monster/Endermite.java
+++ b/net/minecraft/world/entity/monster/Endermite.java
@@ -72,6 +72,13 @@ public class Endermite extends Monster {
}
// Purpur end - Configurable entity base attributes
+ // Purpur start - Toggle for water sensitive mob damage
+ @Override
+ public boolean isSensitiveToWater() {
+ return this.level().purpurConfig.endermiteTakeDamageFromWater;
+ }
+ // Purpur end - Toggle for water sensitive mob damage
+
@Override
protected void registerGoals() {
this.goalSelector.addGoal(1, new FloatGoal(this));
diff --git a/net/minecraft/world/entity/monster/Evoker.java b/net/minecraft/world/entity/monster/Evoker.java
index 4d1d746e39d136243dc620c89b29daf80dc62230..d77e3b0f36ec4a262ff375d9e2da912553a344f8 100644
--- a/net/minecraft/world/entity/monster/Evoker.java
+++ b/net/minecraft/world/entity/monster/Evoker.java
@@ -73,6 +73,13 @@ public class Evoker extends SpellcasterIllager {
}
// Purpur end - Configurable entity base attributes
+ // Purpur start - Toggle for water sensitive mob damage
+ @Override
+ public boolean isSensitiveToWater() {
+ return this.level().purpurConfig.evokerTakeDamageFromWater;
+ }
+ // Purpur end - Toggle for water sensitive mob damage
+
@Override
protected void registerGoals() {
super.registerGoals();
diff --git a/net/minecraft/world/entity/monster/Ghast.java b/net/minecraft/world/entity/monster/Ghast.java
index 06333fe18ea71464d35584592f487c6ac572f0cd..07ea4f44d9fd32d5be5aae6c36b30806acc9db64 100644
--- a/net/minecraft/world/entity/monster/Ghast.java
+++ b/net/minecraft/world/entity/monster/Ghast.java
@@ -82,6 +82,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 f5565d314ded2145219debc446c7ddcb93b660e9..ccc2f7906c322a5406467986565074cbddf6cbe0 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 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<Husk> 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 c45786fa6b9c7834b73fa0266ad4f37dfdfb8937..b2e59058c71eb0b05670be8dcddfff073ae2d0db 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 5b2018019f6ec9e91357d46dd66865e2f232507a..67dc738faef3ab414bf791692090aaea3dbe7385 100644
--- a/net/minecraft/world/entity/monster/Phantom.java
+++ b/net/minecraft/world/entity/monster/Phantom.java
@@ -129,6 +129,13 @@ public class Phantom extends Mob implements Enemy {
}
// Purpur end - Phantoms attracted to crystals and crystals shoot phantoms
+ // Purpur start - Toggle for water sensitive mob damage
+ @Override
+ public boolean isSensitiveToWater() {
+ return this.level().purpurConfig.phantomTakeDamageFromWater;
+ }
+ // Purpur end - Toggle for water sensitive mob damage
+
@Override
public boolean isFlapping() {
return (this.getUniqueFlapTickOffset() + this.tickCount) % TICKS_PER_FLAP == 0;
diff --git a/net/minecraft/world/entity/monster/Pillager.java b/net/minecraft/world/entity/monster/Pillager.java
index bcc20f9642e9d20cf18bb5f8e63daa277154be1a..faaf42a029b1a0423c5e10ee3e17e4ba0e70be02 100644
--- a/net/minecraft/world/entity/monster/Pillager.java
+++ b/net/minecraft/world/entity/monster/Pillager.java
@@ -89,6 +89,13 @@ public class Pillager extends AbstractIllager implements CrossbowAttackMob, Inve
}
// Purpur end - Configurable entity base attributes
+ // Purpur start - Toggle for water sensitive mob damage
+ @Override
+ public boolean isSensitiveToWater() {
+ return this.level().purpurConfig.pillagerTakeDamageFromWater;
+ }
+ // Purpur end - Toggle for water sensitive mob damage
+
@Override
protected void registerGoals() {
super.registerGoals();
diff --git a/net/minecraft/world/entity/monster/Ravager.java b/net/minecraft/world/entity/monster/Ravager.java
index 23b6d3c9746e1ee641d8b19ec50805cb271a9cc9..d75df6de50f9830efeea826d0ebdac17f56d4c4b 100644
--- a/net/minecraft/world/entity/monster/Ravager.java
+++ b/net/minecraft/world/entity/monster/Ravager.java
@@ -101,6 +101,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 1782b1c8e03447d3d4e542f7066cb1af8acd8246..9f6b05671c973e1262cbd6673aac7f1d3a74e2e3 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 6f4aaeb645d9638764c3516d2f1501661ac56170..51714029d4ea5033014dcefd25f74cc0c9a72dbd 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 c19b76a1a0572cb52ee83769384cdb44e4cdf700..555ada78c81ce912bf8d57a9a094102804b372ef 100644
--- a/net/minecraft/world/entity/monster/Skeleton.java
+++ b/net/minecraft/world/entity/monster/Skeleton.java
@@ -51,6 +51,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 38cdc67bd683b653eb76b1c70e5b493f08245fe6..29b500eb4c010ff83d8474f8ee5602c479243e19 100644
--- a/net/minecraft/world/entity/monster/Slime.java
+++ b/net/minecraft/world/entity/monster/Slime.java
@@ -134,6 +134,13 @@ public class Slime extends Mob implements Enemy {
}
// Purpur end - Configurable entity base attributes
+ // Purpur start - Toggle for water sensitive mob damage
+ @Override
+ public boolean isSensitiveToWater() {
+ return this.level().purpurConfig.slimeTakeDamageFromWater;
+ }
+ // Purpur end - Toggle for water sensitive mob damage
+
@Override
protected void registerGoals() {
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
diff --git a/net/minecraft/world/entity/monster/Spider.java b/net/minecraft/world/entity/monster/Spider.java
index 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<Stray> 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 4e300141b0c7fa967e3d0b9ef952097efeb2bef6..533801988cb4f8a916ef002a179990ca913b2f32 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<? extends Strider> 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 48e193182861d5e5b5364b226493c665957bcc2f..30bd8a1b75376e6c74847ec338cc7f8988d6ca8a 100644
--- a/net/minecraft/world/entity/monster/Vex.java
+++ b/net/minecraft/world/entity/monster/Vex.java
@@ -112,6 +112,13 @@ public class Vex extends Monster implements TraceableEntity {
}
// Purpur end - Configurable entity base attributes
+ // Purpur start - Toggle for water sensitive mob damage
+ @Override
+ public boolean isSensitiveToWater() {
+ return this.level().purpurConfig.vexTakeDamageFromWater;
+ }
+ // Purpur end - Toggle for water sensitive mob damage
+
@Override
public boolean isFlapping() {
return this.tickCount % TICKS_PER_FLAP == 0;
diff --git a/net/minecraft/world/entity/monster/Vindicator.java b/net/minecraft/world/entity/monster/Vindicator.java
index 0abc1da5154bef4c7aa03d44f651af39b289c187..9f4d93308adc49d7ae83796a8dc43db16e7992b6 100644
--- a/net/minecraft/world/entity/monster/Vindicator.java
+++ b/net/minecraft/world/entity/monster/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/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 5333aea53ff61eb6143138c4e44ad85977e524d5..ddc8de9a111395aa77025b809f176425be7bb30c 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<Zoglin> 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 ede9101c44ba53c5bd67254bea6fcff7f00b5b47..51cd12a8173d9f95c6a7c2503c3e0e4d40c427c5 100644
--- a/net/minecraft/world/entity/monster/Zombie.java
+++ b/net/minecraft/world/entity/monster/Zombie.java
@@ -142,6 +142,13 @@ public class Zombie extends Monster {
}
// Purpur end - Configurable jockey options
+ // Purpur start - Toggle for water sensitive mob damage
+ @Override
+ public boolean isSensitiveToWater() {
+ return this.level().purpurConfig.zombieTakeDamageFromWater;
+ }
+ // Purpur end - Toggle for water sensitive mob damage
+
@Override
protected void registerGoals() {
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
diff --git a/net/minecraft/world/entity/monster/ZombieVillager.java b/net/minecraft/world/entity/monster/ZombieVillager.java
index 02b503453fb8b64cbf0b9db1e498566289c6bbe3..606fe4bd9c3359e42a025a866873e147ee16a40e 100644
--- a/net/minecraft/world/entity/monster/ZombieVillager.java
+++ b/net/minecraft/world/entity/monster/ZombieVillager.java
@@ -122,6 +122,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 2adee917a4275742968a2e1e8b65bce4b9ac3cc3..7406f1f589509769aed260197f7cfabc081ce37b 100644
--- a/net/minecraft/world/entity/monster/ZombifiedPiglin.java
+++ b/net/minecraft/world/entity/monster/ZombifiedPiglin.java
@@ -106,6 +106,13 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob {
}
// Purpur end - Configurable jockey options
+ // Purpur start - Toggle for water sensitive mob damage
+ @Override
+ public boolean isSensitiveToWater() {
+ return this.level().purpurConfig.zombifiedPiglinTakeDamageFromWater;
+ }
+ // Purpur end - Toggle for water sensitive mob damage
+
@Override
public void setPersistentAngerTarget(@Nullable UUID target) {
this.persistentAngerTarget = target;
diff --git a/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/net/minecraft/world/entity/monster/hoglin/Hoglin.java
index 298246318f5103ff416f076467d3b6bfec297c5e..ddb7532d83b46dae22798937e097a8876fcd6106 100644
--- a/net/minecraft/world/entity/monster/hoglin/Hoglin.java
+++ b/net/minecraft/world/entity/monster/hoglin/Hoglin.java
@@ -128,6 +128,13 @@ public class Hoglin extends Animal implements Enemy, HoglinBase {
}
// Purpur end - Make entity breeding times configurable
+ // Purpur start - Toggle for water sensitive mob damage
+ @Override
+ public boolean isSensitiveToWater() {
+ return this.level().purpurConfig.hoglinTakeDamageFromWater;
+ }
+ // Purpur end - Toggle for water sensitive mob damage
+
@VisibleForTesting
public void setTimeInOverworld(int timeInOverworld) {
this.timeInOverworld = timeInOverworld;
diff --git a/net/minecraft/world/entity/monster/piglin/Piglin.java b/net/minecraft/world/entity/monster/piglin/Piglin.java
index c600c9b1ea4fe08abdce0aed30f61ef073039c7c..76d572959b3422d1691e34fec3bbeb8d5b50d715 100644
--- a/net/minecraft/world/entity/monster/piglin/Piglin.java
+++ b/net/minecraft/world/entity/monster/piglin/Piglin.java
@@ -162,6 +162,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 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 f46a105ac032d3c5a749e92cf004f6d74d0fb957..b71954a47e930bfc0c501c325697cd88166a190c 100644
--- a/net/minecraft/world/entity/npc/Villager.java
+++ b/net/minecraft/world/entity/npc/Villager.java
@@ -282,6 +282,13 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
}
// Purpur end - Configurable entity base attributes
+ // Purpur start - Toggle for water sensitive mob damage
+ @Override
+ public boolean isSensitiveToWater() {
+ return this.level().purpurConfig.villagerTakeDamageFromWater;
+ }
+ // Purpur end - Toggle for water sensitive mob damage
+
@Override
public Brain<Villager> getBrain() {
return (Brain<Villager>)super.getBrain();
diff --git a/net/minecraft/world/entity/npc/WanderingTrader.java b/net/minecraft/world/entity/npc/WanderingTrader.java
index 2917820bf01b1a2ca7301a7099b7b3dcd6c3ee67..f2b59a4490226168dd69ace94022cf6398d48615 100644
--- a/net/minecraft/world/entity/npc/WanderingTrader.java
+++ b/net/minecraft/world/entity/npc/WanderingTrader.java
@@ -98,6 +98,13 @@ public class WanderingTrader extends 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));