Files
Purpur/purpur-server/minecraft-patches/features/0021-Mobs-always-drop-experience.patch
granny 16cfd04b6c feat(mobs/bee): Add can-instantly-start-drowning option, defaults to true
If enabled, this will stop bees from instantly taking damage the moment they begin touching water. Bees can still "drown" with this option disabled when they run out of air.

Relevant: #1639
2025-02-02 18:22:29 -08:00

1303 lines
59 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: BillyGalbreath <blake.galbreath@gmail.com>
Date: Tue, 21 Dec 2021 20:40:42 -0600
Subject: [PATCH] Mobs always drop experience
diff --git a/net/minecraft/world/entity/GlowSquid.java b/net/minecraft/world/entity/GlowSquid.java
index e717c063c8f9623b8c4b4ea3843d05fd79af3653..b982d4b7bdf39fcaf5f22cc889467d7b953e3a8e 100644
--- a/net/minecraft/world/entity/GlowSquid.java
+++ b/net/minecraft/world/entity/GlowSquid.java
@@ -59,6 +59,13 @@ public class GlowSquid extends Squid {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.glowSquidAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@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 4fa526496265a85b637136f0fd0692ef4f570ad6..4ac052a78841939a53dac2afb575cb115581e249 100644
--- a/net/minecraft/world/entity/ambient/Bat.java
+++ b/net/minecraft/world/entity/ambient/Bat.java
@@ -116,6 +116,13 @@ public class Bat extends AmbientCreature {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.batAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@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 950988bf89f36e8555605d370bb039fe89c66fc7..d5727999eb67ff30dbf47865d59452483338e170 100644
--- a/net/minecraft/world/entity/animal/Bee.java
+++ b/net/minecraft/world/entity/animal/Bee.java
@@ -494,6 +494,13 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.beeAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@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 b41ca04043e65f107edaebc49d398650898e35fb..edd796fd34e43d66a48104201d885756fdd968c3 100644
--- a/net/minecraft/world/entity/animal/Cat.java
+++ b/net/minecraft/world/entity/animal/Cat.java
@@ -140,6 +140,13 @@ public class Cat extends TamableAnimal implements VariantHolder<Holder<CatVarian
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.catAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@Override
protected void registerGoals() {
this.temptGoal = new Cat.CatTemptGoal(this, 0.6, itemStack -> itemStack.is(ItemTags.CAT_FOOD), true);
diff --git a/net/minecraft/world/entity/animal/Chicken.java b/net/minecraft/world/entity/animal/Chicken.java
index 2364596156c21e82879f5bf4fd873b9d90b1c308..4d0b172a9d54b1524c8052051859c7178774bef7 100644
--- a/net/minecraft/world/entity/animal/Chicken.java
+++ b/net/minecraft/world/entity/animal/Chicken.java
@@ -95,6 +95,13 @@ public class Chicken extends Animal {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.chickenAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@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 ac7259cfc8428131f90956d7f76f2227049ffae3..b259de78198e0e3df9e5901019283ad246c8e044 100644
--- a/net/minecraft/world/entity/animal/Cod.java
+++ b/net/minecraft/world/entity/animal/Cod.java
@@ -39,6 +39,13 @@ public class Cod extends AbstractSchoolingFish {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.codAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@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 b62c4449047da36d8b4d4b87d03c77906d12dc31..a0297ac3ba520122ed2095d6008c057d749b731e 100644
--- a/net/minecraft/world/entity/animal/Cow.java
+++ b/net/minecraft/world/entity/animal/Cow.java
@@ -88,6 +88,13 @@ public class Cow extends Animal {
}
// Purpur end - Cows naturally aggressive to players chance
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.cowAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@Override
protected void registerGoals() {
this.goalSelector.addGoal(0, new FloatGoal(this));
diff --git a/net/minecraft/world/entity/animal/Dolphin.java b/net/minecraft/world/entity/animal/Dolphin.java
index e104058b3c01bea4cc8a77de2ad4378465903b34..7003b532182737a745491e397a967b72e6b308aa 100644
--- a/net/minecraft/world/entity/animal/Dolphin.java
+++ b/net/minecraft/world/entity/animal/Dolphin.java
@@ -163,6 +163,13 @@ public class Dolphin extends AgeableWaterCreature {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.dolphinAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@Nullable
@Override
public SpawnGroupData finalizeSpawn(
diff --git a/net/minecraft/world/entity/animal/Fox.java b/net/minecraft/world/entity/animal/Fox.java
index 22a70c6af965114e272bb56cb217f975a3cd1bd4..aa610af9db105081fcabc1f299e5f2dd1f4d907e 100644
--- a/net/minecraft/world/entity/animal/Fox.java
+++ b/net/minecraft/world/entity/animal/Fox.java
@@ -189,6 +189,13 @@ public class Fox extends Animal implements VariantHolder<Fox.Variant> {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.foxAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@Override
protected void defineSynchedData(SynchedEntityData.Builder builder) {
super.defineSynchedData(builder);
diff --git a/net/minecraft/world/entity/animal/IronGolem.java b/net/minecraft/world/entity/animal/IronGolem.java
index 23108729ce65ef8b7b215b82f29347513cfd4ebf..ccadc9a151e258ff2c74c65c374b1f09d56d10ec 100644
--- a/net/minecraft/world/entity/animal/IronGolem.java
+++ b/net/minecraft/world/entity/animal/IronGolem.java
@@ -105,6 +105,13 @@ public class IronGolem extends AbstractGolem implements NeutralMob {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.ironGolemAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@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 5e9795f447e88a42909730d383eaa36acfaf18f5..3bcd119757dfc579df790fcc8919a3636bafa7fe 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 Cow implements Shearable, VariantHolder<Mushroo
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.mooshroomAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@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 91677415ba66c8de448a26ac4e6afe6bbbad4fa8..681f1256d8bbedc7731fd2906a7f439da4333552 100644
--- a/net/minecraft/world/entity/animal/Ocelot.java
+++ b/net/minecraft/world/entity/animal/Ocelot.java
@@ -101,6 +101,13 @@ public class Ocelot extends Animal {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.ocelotAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
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 d5d2b9656ec22536ccd9ddb0ebe48a19939d7cc6..0a6a3060f3690ab2d8439d66e6fd6f0c5dc20688 100644
--- a/net/minecraft/world/entity/animal/Panda.java
+++ b/net/minecraft/world/entity/animal/Panda.java
@@ -154,6 +154,13 @@ public class Panda extends Animal {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.pandaAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@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 7e4caeaaebb7018d4909de185a00044f83e9605a..d2c3bfcdafe7ae1937f8bd8f12f9ac4170445e9a 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 VariantHolder<Parrot
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.parrotAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@Nullable
@Override
public SpawnGroupData finalizeSpawn(
diff --git a/net/minecraft/world/entity/animal/Pig.java b/net/minecraft/world/entity/animal/Pig.java
index 26d88130191eba161099309071d67c8db3eaa815..1a504a3d887f5294c5a2fec3f4bc6654d380996e 100644
--- a/net/minecraft/world/entity/animal/Pig.java
+++ b/net/minecraft/world/entity/animal/Pig.java
@@ -95,6 +95,13 @@ public class Pig extends Animal implements ItemSteerable, Saddleable {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.pigAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@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 a7d3509e744344c5694706d0cd1cb047bd34bae1..026e64bf743aa79ba6409fa5cd4374b368f98caa 100644
--- a/net/minecraft/world/entity/animal/PolarBear.java
+++ b/net/minecraft/world/entity/animal/PolarBear.java
@@ -138,6 +138,13 @@ public class PolarBear extends Animal implements NeutralMob {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.polarBearAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@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 d40460676b6e57564455084d6f0c6eb6b6fd003e..5889a9ceb54a354a79f33c9e4fc338cbf912ddda 100644
--- a/net/minecraft/world/entity/animal/Pufferfish.java
+++ b/net/minecraft/world/entity/animal/Pufferfish.java
@@ -71,6 +71,13 @@ public class Pufferfish extends AbstractFish {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.pufferfishAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@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 9c0ff4d4af5db81973c36c278ae32bf76ef5d558..da5b32a17283e540615373097acc511d928aeff5 100644
--- a/net/minecraft/world/entity/animal/Rabbit.java
+++ b/net/minecraft/world/entity/animal/Rabbit.java
@@ -159,6 +159,13 @@ public class Rabbit extends Animal implements VariantHolder<Rabbit.Variant> {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.rabbitAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@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 8bd4b2b29438bff65ed00a42bbc9639111af181f..5da2f14770aebb2286c3e8cbd9622a89a33e0e20 100644
--- a/net/minecraft/world/entity/animal/Salmon.java
+++ b/net/minecraft/world/entity/animal/Salmon.java
@@ -61,6 +61,13 @@ public class Salmon extends AbstractSchoolingFish implements VariantHolder<Salmo
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.salmonAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@Override
public int getMaxSchoolSize() {
return 5;
diff --git a/net/minecraft/world/entity/animal/Sheep.java b/net/minecraft/world/entity/animal/Sheep.java
index 05d955ed33f1c3e0960657c584f4aa1bc96cfe86..c1760dda7b42471982e4ad78b6150b54a654ebf7 100644
--- a/net/minecraft/world/entity/animal/Sheep.java
+++ b/net/minecraft/world/entity/animal/Sheep.java
@@ -120,6 +120,13 @@ public class Sheep extends Animal implements Shearable {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.sheepAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@Override
protected void registerGoals() {
this.eatBlockGoal = new EatBlockGoal(this);
diff --git a/net/minecraft/world/entity/animal/SnowGolem.java b/net/minecraft/world/entity/animal/SnowGolem.java
index dbf3e4db27477afada86e02063a486f7cec573b5..1b9d4562b73ecdf783ecdaf4f4eff9037a4387e6 100644
--- a/net/minecraft/world/entity/animal/SnowGolem.java
+++ b/net/minecraft/world/entity/animal/SnowGolem.java
@@ -86,6 +86,13 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM
}
// Purpur end - Configurable entity base attributes
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.snowGolemAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@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/animal/Squid.java b/net/minecraft/world/entity/animal/Squid.java
index e9ba9d84177e9c27b9c7c5e6274dfb031f6643c7..0a103e6f3f6b0ec05c5d22b1258eb6e2f776e7dd 100644
--- a/net/minecraft/world/entity/animal/Squid.java
+++ b/net/minecraft/world/entity/animal/Squid.java
@@ -106,6 +106,13 @@ public class Squid extends AgeableWaterCreature {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.squidAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@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 7a7b1df65d49ae77ab7d8a20ed9277947b7e5471..41074e7847583583331ef8d685a9f9b85ddf0243 100644
--- a/net/minecraft/world/entity/animal/TropicalFish.java
+++ b/net/minecraft/world/entity/animal/TropicalFish.java
@@ -93,6 +93,13 @@ public class TropicalFish extends AbstractSchoolingFish implements VariantHolder
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.tropicalFishAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
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 cf297f766340b4ff8ecaf80a9a13b2899a9870e6..bc6acbc801e5b371859e731b8419736324e81bf0 100644
--- a/net/minecraft/world/entity/animal/Turtle.java
+++ b/net/minecraft/world/entity/animal/Turtle.java
@@ -123,6 +123,13 @@ public class Turtle extends Animal {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.turtleAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
public void setHomePos(BlockPos homePos) {
this.entityData.set(HOME_POS, homePos);
}
diff --git a/net/minecraft/world/entity/animal/Wolf.java b/net/minecraft/world/entity/animal/Wolf.java
index 8b5eaabe77dcf8851b874b82a2d7f64180ac613b..ef6c0bf20ad18c050cdeb02ddd6c007dfcf1d6b3 100644
--- a/net/minecraft/world/entity/animal/Wolf.java
+++ b/net/minecraft/world/entity/animal/Wolf.java
@@ -224,6 +224,13 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder<Hol
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.wolfAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@Override
protected void registerGoals() {
this.goalSelector.addGoal(1, new FloatGoal(this));
diff --git a/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/net/minecraft/world/entity/animal/axolotl/Axolotl.java
index ee426f8a52c9ff5519641ace0f36a38a36ecd24b..eb74d8313fd3cc15a33330fe7bafaca4f0a5a368 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 VariantHolder<Axolotl.Variant>, B
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.axolotlAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@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 0c357ffacfe4dd982a58e6cf2338c7e6b24610f5..6f106f10466440f8e65e04511f67d48f082d703f 100644
--- a/net/minecraft/world/entity/animal/goat/Goat.java
+++ b/net/minecraft/world/entity/animal/goat/Goat.java
@@ -142,6 +142,13 @@ public class Goat extends Animal {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.goatAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@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 1db6ccdc6c83c704aa84a46ee2751a17125bf457..3e0181578a6f2d22d1da3776abf30bf97d124620 100644
--- a/net/minecraft/world/entity/animal/horse/Donkey.java
+++ b/net/minecraft/world/entity/animal/horse/Donkey.java
@@ -54,6 +54,13 @@ public class Donkey extends AbstractChestedHorse {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.donkeyAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@Override
protected SoundEvent getAmbientSound() {
return SoundEvents.DONKEY_AMBIENT;
diff --git a/net/minecraft/world/entity/animal/horse/Horse.java b/net/minecraft/world/entity/animal/horse/Horse.java
index f257d549570918381925cef98734fc0aa605f8f2..be0d636ca894c5995f28f59c196cd8e56dd228c4 100644
--- a/net/minecraft/world/entity/animal/horse/Horse.java
+++ b/net/minecraft/world/entity/animal/horse/Horse.java
@@ -81,6 +81,13 @@ public class Horse extends AbstractHorse implements VariantHolder<Variant> {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.horseAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@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 872a54186a20fd855fe7981f3ff1c867f4c64d19..c21d558a6a3a61d6c54b8163f8cb4963846b2c26 100644
--- a/net/minecraft/world/entity/animal/horse/Llama.java
+++ b/net/minecraft/world/entity/animal/horse/Llama.java
@@ -155,6 +155,13 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.llamaAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
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 2f7459791f1766ac8e4842610bf64a3eb2d3b256..3c56961efa743edba8a9a613b992d0afcd9ae415 100644
--- a/net/minecraft/world/entity/animal/horse/Mule.java
+++ b/net/minecraft/world/entity/animal/horse/Mule.java
@@ -53,6 +53,13 @@ public class Mule extends AbstractChestedHorse {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.muleAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@Override
protected 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 43937544a38e33657b36e76c8fb7ed6bedb7de4c..d5ee5b816efc1b3b17b94227f8ea05ab7a2ccad7 100644
--- a/net/minecraft/world/entity/animal/horse/SkeletonHorse.java
+++ b/net/minecraft/world/entity/animal/horse/SkeletonHorse.java
@@ -77,6 +77,13 @@ public class SkeletonHorse extends AbstractHorse {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.skeletonHorseAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
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 8b7eab2e9e77bcf3423602692bd87a933dd2867b..8faeb84f1c48b6a713867a1b95fed6402654fabb 100644
--- a/net/minecraft/world/entity/animal/horse/TraderLlama.java
+++ b/net/minecraft/world/entity/animal/horse/TraderLlama.java
@@ -82,6 +82,13 @@ public class TraderLlama extends Llama {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.traderLlamaAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@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 a2642457d3c24a13a8becb4d743c42e64b5a4923..4a9c0242b5c01d1adda281058658134e7982e8c7 100644
--- a/net/minecraft/world/entity/animal/horse/ZombieHorse.java
+++ b/net/minecraft/world/entity/animal/horse/ZombieHorse.java
@@ -76,6 +76,13 @@ public class ZombieHorse extends AbstractHorse {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.zombieHorseAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
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/boss/wither/WitherBoss.java b/net/minecraft/world/entity/boss/wither/WitherBoss.java
index 7a3688e6cad1bbb0a47d8f3d0218bd777a0ab033..2d9f64cddbec782de1775ec6da67b16203e3fd90 100644
--- a/net/minecraft/world/entity/boss/wither/WitherBoss.java
+++ b/net/minecraft/world/entity/boss/wither/WitherBoss.java
@@ -226,6 +226,13 @@ public class WitherBoss extends Monster implements RangedAttackMob {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.witherAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@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 1ea964b3a3b9403ad3a500bf1c4b8d69a529d16a..79f5f0dbf95ed72dd031495c75675d7b6c7dfc34 100644
--- a/net/minecraft/world/entity/monster/Blaze.java
+++ b/net/minecraft/world/entity/monster/Blaze.java
@@ -83,6 +83,13 @@ public class Blaze extends Monster {
}
// Purpur end - Configurable entity base attributes
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.blazeAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@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/CaveSpider.java b/net/minecraft/world/entity/monster/CaveSpider.java
index 420fe0d01d0b173a6a541f77e1aaca3f3bb565e7..7eca4b751d900c6d6ee34993c3e2368127d19e03 100644
--- a/net/minecraft/world/entity/monster/CaveSpider.java
+++ b/net/minecraft/world/entity/monster/CaveSpider.java
@@ -58,6 +58,13 @@ public class CaveSpider extends Spider {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.caveSpiderAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@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 6d9995d5f38b2f94a2d3362da7861b3e90e4fb6f..a85b64799faa860367cded67a264b436cd46f049 100644
--- a/net/minecraft/world/entity/monster/Creeper.java
+++ b/net/minecraft/world/entity/monster/Creeper.java
@@ -274,6 +274,13 @@ public class Creeper extends Monster {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.creeperAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@Override
protected SoundEvent getHurtSound(DamageSource damageSource) {
return SoundEvents.CREEPER_HURT;
diff --git a/net/minecraft/world/entity/monster/Drowned.java b/net/minecraft/world/entity/monster/Drowned.java
index 0a1a78e65b6472b713835262b5937bc7ea67b95c..6c73245b8d04f194e72165aa0000ca79a95db59d 100644
--- a/net/minecraft/world/entity/monster/Drowned.java
+++ b/net/minecraft/world/entity/monster/Drowned.java
@@ -129,6 +129,13 @@ public class Drowned extends Zombie implements RangedAttackMob {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.drownedAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@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 2b1d33f4938b978c5b04ede7562bdecb5fbd2245..358021a6eb936ac43e29c7c2c92c71e9cae6ab93 100644
--- a/net/minecraft/world/entity/monster/ElderGuardian.java
+++ b/net/minecraft/world/entity/monster/ElderGuardian.java
@@ -58,6 +58,13 @@ public class ElderGuardian extends Guardian {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.elderGuardianAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
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 6fccfb243c26c27b665df57e5e19eb3350c52ddf..78b1619afa2062638fbfe21b9978f634be1aaf62 100644
--- a/net/minecraft/world/entity/monster/EnderMan.java
+++ b/net/minecraft/world/entity/monster/EnderMan.java
@@ -115,6 +115,13 @@ public class EnderMan extends Monster implements NeutralMob {
}
// Purpur end - Configurable entity base attributes
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.endermanAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@Override
protected void registerGoals() {
this.goalSelector.addGoal(0, new FloatGoal(this));
diff --git a/net/minecraft/world/entity/monster/Endermite.java b/net/minecraft/world/entity/monster/Endermite.java
index 38e3b3ed2c003fe7bbb476f7bf9a882ea2de792a..441f7d3cfa1e9896a065dae51d871901ac4330e3 100644
--- a/net/minecraft/world/entity/monster/Endermite.java
+++ b/net/minecraft/world/entity/monster/Endermite.java
@@ -77,6 +77,13 @@ public class Endermite extends Monster {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.endermiteAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@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 61ed6606948cc5f8af543eb9ae05f9aeb4e73b89..5c32406d00ec20516649d7a219a5b3c27c8945aa 100644
--- a/net/minecraft/world/entity/monster/Evoker.java
+++ b/net/minecraft/world/entity/monster/Evoker.java
@@ -82,6 +82,13 @@ public class Evoker extends SpellcasterIllager {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.evokerAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@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 68debfa8c6d0fc3ff536d2b4d89c131fd6aca935..a9d92e857c5d05da6f2a5b6264590efe235061a7 100644
--- a/net/minecraft/world/entity/monster/Ghast.java
+++ b/net/minecraft/world/entity/monster/Ghast.java
@@ -91,6 +91,13 @@ public class Ghast extends FlyingMob implements Enemy {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.ghastAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@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 009b8a8b1b9aabc0aef1c12a0c0f65f9ccfcd306..3f575abee4c8933d1642400d134b0fc915215a1a 100644
--- a/net/minecraft/world/entity/monster/Giant.java
+++ b/net/minecraft/world/entity/monster/Giant.java
@@ -69,6 +69,13 @@ public class Giant extends Monster {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.giantAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
public static AttributeSupplier.Builder createAttributes() {
return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 100.0).add(Attributes.MOVEMENT_SPEED, 0.5).add(Attributes.ATTACK_DAMAGE, 50.0);
}
diff --git a/net/minecraft/world/entity/monster/Guardian.java b/net/minecraft/world/entity/monster/Guardian.java
index 819679a224ffe33e03d8e6b429c8e31b67c769fa..60278b2491f644b70ef96b2e14e1f07bb341a0f1 100644
--- a/net/minecraft/world/entity/monster/Guardian.java
+++ b/net/minecraft/world/entity/monster/Guardian.java
@@ -105,6 +105,13 @@ public class Guardian extends Monster {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.guardianAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@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 e618e716cb5ff3a3c5d284e985455694cc0edde0..a5bfc6f5caba1da8cfcb345524e05e8676672cb0 100644
--- a/net/minecraft/world/entity/monster/Husk.java
+++ b/net/minecraft/world/entity/monster/Husk.java
@@ -75,6 +75,13 @@ public class Husk extends Zombie {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.huskAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
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 ad661f2bf8957644605b52a469d6a7cf8e064398..9686658b90e886d6236f553d7406771814d18672 100644
--- a/net/minecraft/world/entity/monster/Illusioner.java
+++ b/net/minecraft/world/entity/monster/Illusioner.java
@@ -91,6 +91,13 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.illusionerAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@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 bf26f5f6017c60d5991d5f6c87da2acbd95ef5bb..312d4a3d312b5c326d6ca13ccfc48171e18f4370 100644
--- a/net/minecraft/world/entity/monster/MagmaCube.java
+++ b/net/minecraft/world/entity/monster/MagmaCube.java
@@ -75,6 +75,13 @@ public class MagmaCube extends Slime {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.magmaCubeAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
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 0ee817699fffbb929011465029182cc56befc30c..39f94cee78e8fc14d892cb64fb5234bf88d964ad 100644
--- a/net/minecraft/world/entity/monster/Phantom.java
+++ b/net/minecraft/world/entity/monster/Phantom.java
@@ -157,6 +157,13 @@ public class Phantom extends FlyingMob implements Enemy {
public void setShouldBurnInDay(boolean shouldBurnInDay) { this.shouldBurnInDay = shouldBurnInDay; }
// Purpur end - API for any mob to burn daylight
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.phantomAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@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 869a1007de13f3f5d757968d0f84cbf43786c870..a57d869cdc6a05124237933437aa2d26ff72cab3 100644
--- a/net/minecraft/world/entity/monster/Pillager.java
+++ b/net/minecraft/world/entity/monster/Pillager.java
@@ -95,6 +95,13 @@ public class Pillager extends AbstractIllager implements CrossbowAttackMob, Inve
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.pillagerAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@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 3d9eae0403875a99c25ccb47888dc591f051e744..ce5cd032203839887a29008c2a1420c6bb6f4fee 100644
--- a/net/minecraft/world/entity/monster/Ravager.java
+++ b/net/minecraft/world/entity/monster/Ravager.java
@@ -104,6 +104,13 @@ public class Ravager extends Raider {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.ravagerAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@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 c26e4858a14571d58e439cabd5f2593da4ee2634..a006300aea2cbb05400550f1c79e872d095384f8 100644
--- a/net/minecraft/world/entity/monster/Shulker.java
+++ b/net/minecraft/world/entity/monster/Shulker.java
@@ -136,6 +136,13 @@ public class Shulker extends AbstractGolem implements VariantHolder<Optional<Dye
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.shulkerAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@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 52f18edfe4525b2626f86a5b5847c74feb96e519..465b0578435ff3fb028f860e84ba934fa71f61f2 100644
--- a/net/minecraft/world/entity/monster/Silverfish.java
+++ b/net/minecraft/world/entity/monster/Silverfish.java
@@ -73,6 +73,13 @@ public class Silverfish extends Monster {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.silverfishAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@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 29ef7a09c42590df7a8cd7f0874a8eb995b77cc8..7018471a465724e4a1d67fe18bb602176cddd522 100644
--- a/net/minecraft/world/entity/monster/Skeleton.java
+++ b/net/minecraft/world/entity/monster/Skeleton.java
@@ -56,6 +56,13 @@ public class Skeleton extends AbstractSkeleton {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.skeletonAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@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 ed0a242bf99cf03340c882fc56f8c09e77dffd37..240a54b210e23d5b79e6bcaf3806aa454668135d 100644
--- a/net/minecraft/world/entity/monster/Slime.java
+++ b/net/minecraft/world/entity/monster/Slime.java
@@ -139,6 +139,13 @@ public class Slime extends Mob implements Enemy {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.slimeAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@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 825245ca739d18fdb3d53e608159a2d065d02100..ece8d81e29709a1c0cb5c7b55b1193b630ecb113 100644
--- a/net/minecraft/world/entity/monster/Spider.java
+++ b/net/minecraft/world/entity/monster/Spider.java
@@ -82,6 +82,13 @@ public class Spider extends Monster {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.spiderAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@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 17c168310de052ecd0894f7ceb92bab3856eefed..fdaa01c8bbaf9e613462e41f508fdc96b3467e03 100644
--- a/net/minecraft/world/entity/monster/Stray.java
+++ b/net/minecraft/world/entity/monster/Stray.java
@@ -53,6 +53,13 @@ public class Stray extends AbstractSkeleton {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.strayAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
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 d01bc46d77340b10b23d0c0d50bddc37657028c8..241526239bdbd5d9276f85e7fca46a7051f46a25 100644
--- a/net/minecraft/world/entity/monster/Strider.java
+++ b/net/minecraft/world/entity/monster/Strider.java
@@ -126,6 +126,13 @@ public class Strider extends Animal implements ItemSteerable, Saddleable {
}
// Purpur end - Make entity breeding times configurable
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.striderAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
public static boolean checkStriderSpawnRules(
EntityType<Strider> entityType, LevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random
) {
diff --git a/net/minecraft/world/entity/monster/Vex.java b/net/minecraft/world/entity/monster/Vex.java
index ffdb200d9716104f8df91dbeef590b2264e587b8..0ce9eb1f4108b6afab6df84d5e709be0882e515a 100644
--- a/net/minecraft/world/entity/monster/Vex.java
+++ b/net/minecraft/world/entity/monster/Vex.java
@@ -117,6 +117,13 @@ public class Vex extends Monster implements TraceableEntity {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.vexAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@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 5f68d73460adfac2ead57d168156a2784af979ae..b584f71440a81ac09d24e59763a21e857f290e5a 100644
--- a/net/minecraft/world/entity/monster/Vindicator.java
+++ b/net/minecraft/world/entity/monster/Vindicator.java
@@ -87,6 +87,13 @@ public class Vindicator extends AbstractIllager {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.vindicatorAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@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 96ba35f3530ab405a960c79955699666deb6b845..e4353c64732067198f082cdd266c1f1ee1fe4f4e 100644
--- a/net/minecraft/world/entity/monster/Witch.java
+++ b/net/minecraft/world/entity/monster/Witch.java
@@ -88,6 +88,13 @@ public class Witch extends Raider implements RangedAttackMob {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.witchAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@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 a4dc9b7fbde19b08eb389dc42df21aa5df94e703..ff2596f69d00b36c65872ab2e27e5d44a6ffa3e1 100644
--- a/net/minecraft/world/entity/monster/WitherSkeleton.java
+++ b/net/minecraft/world/entity/monster/WitherSkeleton.java
@@ -66,6 +66,13 @@ public class WitherSkeleton extends AbstractSkeleton {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.witherSkeletonAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@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 79a4a3f4e10e1f9c1a6100060a95636075fc8236..d2a67f3e1c971f737e58567dae23fa70e9d942ea 100644
--- a/net/minecraft/world/entity/monster/Zoglin.java
+++ b/net/minecraft/world/entity/monster/Zoglin.java
@@ -117,6 +117,13 @@ public class Zoglin extends Monster implements HoglinBase {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.zoglinAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@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 b1da45df27f02395d793e7eafe576f5f92aa3a7b..7af71c777dca26cd94b1807a2a77ea0d30e92976 100644
--- a/net/minecraft/world/entity/monster/Zombie.java
+++ b/net/minecraft/world/entity/monster/Zombie.java
@@ -147,6 +147,13 @@ public class Zombie extends Monster {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.zombieAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@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 94b9abc765b78a40a7ecbf4cbd775b778d49c815..1ca0514732916d325c4a76d73120aaf613c3f780 100644
--- a/net/minecraft/world/entity/monster/ZombieVillager.java
+++ b/net/minecraft/world/entity/monster/ZombieVillager.java
@@ -131,6 +131,13 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.zombieVillagerAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@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 09c991d8e344f11bc84dea453042ee35c39e580e..fddbbffafea275dad187b7908386cf4c05c86743 100644
--- a/net/minecraft/world/entity/monster/ZombifiedPiglin.java
+++ b/net/minecraft/world/entity/monster/ZombifiedPiglin.java
@@ -112,6 +112,13 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.zombifiedPiglinAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@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 896bd531a5333d6dc8996bbdfc5c878b1a7d2da0..cf0a15ff4a49bcc17dc6dd58e91eadec0c519455 100644
--- a/net/minecraft/world/entity/monster/hoglin/Hoglin.java
+++ b/net/minecraft/world/entity/monster/hoglin/Hoglin.java
@@ -136,6 +136,13 @@ public class Hoglin extends Animal implements Enemy, HoglinBase {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.hoglinAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@Override
public boolean canBeLeashed() {
return true;
diff --git a/net/minecraft/world/entity/monster/piglin/Piglin.java b/net/minecraft/world/entity/monster/piglin/Piglin.java
index 55ebfa5df06a59203248514d10dced9660ebf215..f0d78cf5fe2c39add9a673471103c352cce72a45 100644
--- a/net/minecraft/world/entity/monster/piglin/Piglin.java
+++ b/net/minecraft/world/entity/monster/piglin/Piglin.java
@@ -183,6 +183,13 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.piglinAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@Override
public void addAdditionalSaveData(CompoundTag compound) {
super.addAdditionalSaveData(compound);
diff --git a/net/minecraft/world/entity/monster/piglin/PiglinBrute.java b/net/minecraft/world/entity/monster/piglin/PiglinBrute.java
index 2237681f298113bda0556699e19e880f4b04a853..4984b9864b63f92bc939b530253e871ca94a3277 100644
--- a/net/minecraft/world/entity/monster/piglin/PiglinBrute.java
+++ b/net/minecraft/world/entity/monster/piglin/PiglinBrute.java
@@ -97,6 +97,13 @@ public class PiglinBrute extends AbstractPiglin {
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.piglinBruteAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
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 97e5bb0cc335b23211e78044919282bfabad26a5..16fbe4e6521cd4f6baa8f5dd590da0fc749f6585 100644
--- a/net/minecraft/world/entity/npc/Villager.java
+++ b/net/minecraft/world/entity/npc/Villager.java
@@ -285,6 +285,13 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.villagerAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@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 8046a2d640e7c4d59cb5b9c6dff3bf5f026c7153..c3fbcc7956a64d49466874776f257ba27f55f2a4 100644
--- a/net/minecraft/world/entity/npc/WanderingTrader.java
+++ b/net/minecraft/world/entity/npc/WanderingTrader.java
@@ -114,6 +114,13 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill
}
// Purpur end - Toggle for water sensitive mob damage
+ // Purpur start - Mobs always drop experience
+ @Override
+ protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.wanderingTraderAlwaysDropExp;
+ }
+ // Purpur end - Mobs always drop experience
+
@Override
protected void registerGoals() {
this.goalSelector.addGoal(0, new FloatGoal(this));