From 55dbafe799a3934a0853c409cbc2a2d4a190f11a Mon Sep 17 00:00:00 2001 From: granny Date: Thu, 16 Mar 2023 02:12:43 -0700 Subject: [PATCH] it compiles \o/ --- patches/server/0006-Ridables.patch | 27 +- ...-Configurable-entity-base-attributes.patch | 386 +++--------------- patches/server/0009-Llama-API.patch | 10 +- .../0013-LivingEntity-safeFallDistance.patch | 6 +- patches/server/0024-Giants-AI-settings.patch | 8 +- .../0025-Zombie-horse-naturally-spawn.patch | 12 +- ...0026-Charged-creeper-naturally-spawn.patch | 8 +- ...bit-naturally-spawn-toast-and-killer.patch | 8 +- .../server/0029-Tulips-change-fox-type.patch | 8 +- .../server/0030-Breedable-Polar-Bears.patch | 8 +- .../server/0031-Chickens-can-retaliate.patch | 8 +- .../server/0033-Cat-spawning-options.patch | 6 +- patches/server/0034-Cows-eat-mushrooms.patch | 8 +- .../server/0036-Pigs-give-saddle-back.patch | 8 +- ...37-Snowman-drop-and-put-back-pumpkin.patch | 8 +- ...38-Ender-dragon-always-drop-full-exp.patch | 6 +- ...derman-and-creeper-griefing-controls.patch | 14 +- ...0050-Villagers-follow-emerald-blocks.patch | 14 +- .../0051-Allow-leashing-villagers.patch | 14 +- .../server/0062-Item-entity-immunities.patch | 12 +- .../0066-Configurable-jockey-options.patch | 32 +- ...ed-to-crystals-and-crystals-shoot-ph.patch | 12 +- .../0068-Add-phantom-spawning-options.patch | 6 +- patches/server/0075-Squid-EAR-immunity.patch | 6 +- .../server/0076-Phantoms-burn-in-light.patch | 8 +- .../0077-Configurable-villager-breeding.patch | 8 +- ...0-Add-vindicator-johnny-spawn-chance.patch | 8 +- ...o-disable-dolphin-treasure-searching.patch | 6 +- ...Stop-squids-floating-on-top-of-water.patch | 6 +- ...stomizable-wither-health-and-healing.patch | 8 +- ...sable-zombie-aggressiveness-towards-.patch | 10 +- patches/server/0096-Flying-squids-Oh-my.patch | 8 +- ...e-entity-breeding-times-configurable.patch | 226 ++++++---- .../0111-Snow-Golem-rate-of-fire-config.patch | 6 +- ...Villager-Clerics-to-farm-Nether-Wart.patch | 8 +- ...fied-Piglin-death-always-counting-as.patch | 8 +- ...ble-chance-for-wolves-to-spawn-rabid.patch | 8 +- ...16-Configurable-default-collar-color.patch | 10 +- .../0120-Striders-give-saddle-back.patch | 8 +- ...iefing-bypass-to-everything-affected.patch | 16 +- ...oggle-for-water-sensitive-mob-damage.patch | 140 +++---- ...ither-Ender-Dragon-can-ride-vehicles.patch | 6 +- ...142-Config-to-disable-Llama-caravans.patch | 8 +- ...0147-Add-config-for-villager-trading.patch | 14 +- ...0-Config-for-wither-explosion-radius.patch | 6 +- ...onfigurable-hunger-starvation-damage.patch | 4 +- ...0197-Silk-touchable-budding-amethyst.patch | 4 +- ...izeable-Zombie-Villager-curing-times.patch | 8 +- ...0206-Toggle-for-Wither-s-spawn-sound.patch | 8 +- .../0209-Conduit-behavior-configuration.patch | 4 +- .../server/0210-Cauldron-fill-chances.patch | 4 +- ...or-beds-to-explode-on-villager-sleep.patch | 6 +- ...ion-to-disable-zombie-villagers-cure.patch | 8 +- .../0230-Mobs-always-drop-experience.patch | 130 +++--- .../0236-Mob-head-visibility-percent.patch | 8 +- ...nfigurable-minimum-demand-for-trades.patch | 8 +- .../0249-Lobotomize-stuck-villagers.patch | 12 +- ...tion-for-villager-display-trade-item.patch | 6 +- ...urable-search-radius-for-villagers-t.patch | 8 +- patches/server/0259-Stonecutter-damage.patch | 10 +- .../server/0275-Remove-Mojang-Profiler.patch | 8 +- patches/server/0296-Fire-Immunity-API.patch | 6 +- patches/server/0298-Added-got-ram-event.patch | 4 +- .../server/0300-End-Crystal-Cramming.patch | 6 +- 64 files changed, 599 insertions(+), 814 deletions(-) diff --git a/patches/server/0006-Ridables.patch b/patches/server/0006-Ridables.patch index fe1b5d55f..05619c396 100644 --- a/patches/server/0006-Ridables.patch +++ b/patches/server/0006-Ridables.patch @@ -2694,6 +2694,19 @@ index e2935115c8d41af1d623da4f0d4f73de80386129..e9f1d53599168c4c4b44a14b44514302 + if (level.purpurConfig.zombieHorseCanSwim) goalSelector.addGoal(0, new net.minecraft.world.entity.ai.goal.FloatGoal(this)); // Purpur } } +diff --git a/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java b/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java +index 5719172a31f005ce419f365011d53712a9b2820f..64a8318d95455810cb096059bcfd8e64d0f5d6f6 100644 +--- a/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java ++++ b/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java +@@ -273,7 +273,7 @@ public class Sniffer extends Animal { + } + + @Override +- protected void jumpFromGround() { ++ public void jumpFromGround() { // Purpur - protected -> public + super.jumpFromGround(); + double d = this.moveControl.getSpeedModifier(); + if (d > 0.0D) { diff --git a/src/main/java/net/minecraft/world/entity/boss/EnderDragonPart.java b/src/main/java/net/minecraft/world/entity/boss/EnderDragonPart.java index de84a00ce2d2b7c654b08164489624e124568346..998c72513df1dcd2b1316b320b3d5e7ca8e69fd4 100644 --- a/src/main/java/net/minecraft/world/entity/boss/EnderDragonPart.java @@ -5082,7 +5095,7 @@ index c4f4a26e016eea744f587461af80461074d48303..10b109de5abc015b61a896d363ad37a0 public void tick() { super.tick(); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 57a0dbb23a32123d30c3b3572f4d129be9d97847..57c05450bab104273c6532b6534568df0284a5d8 100644 +index 57a0dbb23a32123d30c3b3572f4d129be9d97847..fa6938626c64ed17a2f56739d5801494ea6f3be1 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -1442,4 +1442,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { @@ -5093,7 +5106,7 @@ index 57a0dbb23a32123d30c3b3572f4d129be9d97847..57c05450bab104273c6532b6534568df + // Purpur start + @Override + public org.bukkit.entity.Player getRider() { -+ Player rider = getHandle().getRider(); ++ net.minecraft.world.entity.player.Player rider = getHandle().getRider(); + return rider != null ? (org.bukkit.entity.Player) rider.getBukkitEntity() : null; + } + @@ -5109,7 +5122,7 @@ index 57a0dbb23a32123d30c3b3572f4d129be9d97847..57c05450bab104273c6532b6534568df + + @Override + public boolean isRidableInWater() { -+ return getHandle().rideableUnderWater(); ++ return !getHandle().dismountsUnderwater(); + } + // Purpur end } @@ -6263,7 +6276,7 @@ index 0000000000000000000000000000000000000000..ba2a37dad43e238e54632975abea8ee6 +} diff --git a/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java b/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java new file mode 100644 -index 0000000000000000000000000000000000000000..d55f7611599b2a339293688861100cb8dae9f6c6 +index 0000000000000000000000000000000000000000..602df34e3ec0d05f58737a54a1e8585e8730095c --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java @@ -0,0 +1,99 @@ @@ -6352,7 +6365,7 @@ index 0000000000000000000000000000000000000000..d55f7611599b2a339293688861100cb8 + protected void onHitEntity(EntityHitResult entityHitResult) { + Entity shooter = this.getOwner(); + if (shooter instanceof LivingEntity) { -+ entityHitResult.getEntity().hurt(DamageSource.indirectMobAttack(this, (LivingEntity) shooter).setProjectile(), level.purpurConfig.dolphinSpitDamage); ++ entityHitResult.getEntity().hurt(entityHitResult.getEntity().damageSources().mobProjectile(this, (LivingEntity) shooter), level.purpurConfig.dolphinSpitDamage); + } + } + @@ -6368,7 +6381,7 @@ index 0000000000000000000000000000000000000000..d55f7611599b2a339293688861100cb8 +} diff --git a/src/main/java/org/purpurmc/purpur/entity/PhantomFlames.java b/src/main/java/org/purpurmc/purpur/entity/PhantomFlames.java new file mode 100644 -index 0000000000000000000000000000000000000000..2eca8317e991ec46cc88a4c7d6d8b50152ba4ea7 +index 0000000000000000000000000000000000000000..9ee7fc642d05fd61d91d09c754c6f0680bc39e56 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/entity/PhantomFlames.java @@ -0,0 +1,114 @@ @@ -6466,7 +6479,7 @@ index 0000000000000000000000000000000000000000..2eca8317e991ec46cc88a4c7d6d8b501 + if (shooter instanceof LivingEntity) { + Entity target = entityHitResult.getEntity(); + if (canGrief || (target instanceof LivingEntity && !(target instanceof ArmorStand))) { -+ boolean hurt = target.hurt(DamageSource.indirectMobAttack(this, (LivingEntity) shooter).setProjectile(), level.purpurConfig.phantomFlameDamage); ++ boolean hurt = target.hurt(target.damageSources().mobProjectile(this, (LivingEntity) shooter), level.purpurConfig.phantomFlameDamage); + if (hurt && level.purpurConfig.phantomFlameFireTime > 0) { + target.setSecondsOnFire(level.purpurConfig.phantomFlameFireTime); + } diff --git a/patches/server/0007-Configurable-entity-base-attributes.patch b/patches/server/0007-Configurable-entity-base-attributes.patch index 48323b9f3..491426b66 100644 --- a/patches/server/0007-Configurable-entity-base-attributes.patch +++ b/patches/server/0007-Configurable-entity-base-attributes.patch @@ -474,278 +474,6 @@ index f30aad7e722f895b8f6966f042021fc80f470994..eaf2e6b9865a36b7c648bd1205db922a // Purpur end @Override -diff --git a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java -index 37882a393d7c17a9437145ab5fe1f74370681146..40323720d9ded9e3bc5eb2f16b43bb801f6f833c 100644 ---- a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java -+++ b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java -@@ -314,6 +314,23 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Rider - return this.dashCooldown; - } - -+ // Purpur start -+ @Override -+ public float generateRandomMaxHealth(net.minecraft.util.RandomSource random) { -+ return (float) generateRandomMaxHealth(this.level.purpurConfig.camelMaxHealthMin, this.level.purpurConfig.camelMaxHealthMax); -+ } -+ -+ @Override -+ public double generateRandomJumpStrength(net.minecraft.util.RandomSource random) { -+ return generateRandomJumpStrength(this.level.purpurConfig.camelJumpStrengthMin, this.level.purpurConfig.camelJumpStrengthMax); -+ } -+ -+ @Override -+ public double generateRandomSpeed(net.minecraft.util.RandomSource random) { -+ return generateRandomSpeed(this.level.purpurConfig.camelMovementSpeedMin, this.level.purpurConfig.camelMovementSpeedMax); -+ } -+ // Purpur end -+ - @Override - protected SoundEvent getAmbientSound() { - return SoundEvents.CAMEL_AMBIENT; -diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index a9805129f0aaba5f0c2751d463019844eb3b347d..44c1da8784cfeac754f5b43c1ac3bff12c4a262d 100644 ---- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -+++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -@@ -104,6 +104,11 @@ public class Goat extends Animal { - public boolean isControllable() { - return level.purpurConfig.goatControllable; - } -+ -+ @Override -+ public void initAttributes() { -+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.goatMaxHealth); -+ } - // Purpur end - - @Override -diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java -index f404bee067c7666fd4cf4818c9b093d54a43d5de..f9c8b5965c898ac57d4c8652e19c1f841f86cca7 100644 ---- a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java -+++ b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java -@@ -155,6 +155,32 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, - public boolean isRidable() { - return false; // vanilla handles - } -+ -+ @Override -+ public void initAttributes() { -+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.generateRandomMaxHealth(this.random)); -+ this.getAttribute(Attributes.MOVEMENT_SPEED).setBaseValue(this.generateRandomSpeed(this.random)); -+ this.getAttribute(Attributes.JUMP_STRENGTH).setBaseValue(this.generateRandomJumpStrength(this.random)); -+ } -+ -+ protected double generateRandomMaxHealth(double min, double max) { -+ if (min == max) return min; -+ int diff = Mth.floor(max - min); -+ double base = max - diff; -+ int first = Mth.floor((double) diff / 2); -+ int rest = diff - first; -+ return base + random.nextInt(first + 1) + random.nextInt(rest + 1); -+ } -+ -+ protected double generateRandomJumpStrength(double min, double max) { -+ if (min == max) return min; -+ return min + (max - min) * this.random.nextDouble(); -+ } -+ -+ protected double generateRandomSpeed(double min, double max) { -+ if (min == max) return min; -+ return min + (max - min) * this.random.nextDouble(); -+ } - // Purpur end - - @Override -@@ -1255,7 +1281,7 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, - entityData = new AgeableMob.AgeableMobGroupData(0.2F); - } - -- this.randomizeAttributes(world.getRandom()); -+ // this.randomizeAttributes(world.getRandom()); // Purpur - replaced by initAttributes() - return super.finalizeSpawn(world, difficulty, spawnReason, (SpawnGroupData) entityData, entityNbt); - } - -diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java -index 8f7cd5c3c786ff94fc9b890ec488a461b7edced0..1bf1bff1332cca89ba2df11f397473701b61fc7e 100644 ---- a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java -+++ b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java -@@ -20,6 +20,21 @@ public class Donkey extends AbstractChestedHorse { - public boolean dismountsUnderwater() { - return !level.purpurConfig.donkeyRidableInWater || super.dismountsUnderwater(); - } -+ -+ @Override -+ public float generateRandomMaxHealth(net.minecraft.util.RandomSource random) { -+ return (float) generateRandomMaxHealth(this.level.purpurConfig.donkeyMaxHealthMin, this.level.purpurConfig.donkeyMaxHealthMax); -+ } -+ -+ @Override -+ public double generateRandomJumpStrength(net.minecraft.util.RandomSource random) { -+ return generateRandomJumpStrength(this.level.purpurConfig.donkeyJumpStrengthMin, this.level.purpurConfig.donkeyJumpStrengthMax); -+ } -+ -+ @Override -+ public double generateRandomSpeed(net.minecraft.util.RandomSource random) { -+ return generateRandomSpeed(this.level.purpurConfig.donkeyMovementSpeedMin, this.level.purpurConfig.donkeyMovementSpeedMax); -+ } - // Purpur end - - @Override -diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java b/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java -index c653a3d459fd8c1c4728cd5a0e63c6b3707792d9..ac8ba7652e0ca9f940152de09dc6cac564b99a2e 100644 ---- a/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java -+++ b/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java -@@ -45,6 +45,21 @@ public class Horse extends AbstractHorse implements VariantHolder { - public boolean dismountsUnderwater() { - return !level.purpurConfig.horseRidableInWater || super.dismountsUnderwater(); - } -+ -+ @Override -+ public float generateRandomMaxHealth(RandomSource random) { -+ return (float) generateRandomMaxHealth(this.level.purpurConfig.horseMaxHealthMin, this.level.purpurConfig.horseMaxHealthMax); -+ } -+ -+ @Override -+ public double generateRandomJumpStrength(RandomSource random) { -+ return generateRandomJumpStrength(this.level.purpurConfig.horseJumpStrengthMin, this.level.purpurConfig.horseJumpStrengthMax); -+ } -+ -+ @Override -+ public double generateRandomSpeed(RandomSource random) { -+ return generateRandomSpeed(this.level.purpurConfig.horseMovementSpeedMin, this.level.purpurConfig.horseMovementSpeedMax); -+ } - // Purpur end - - @Override -diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -index 0352e21d54ce58d0ef36df8e68ce74389daa3b5c..b9ba6f7ea3b4b436ac28a7c15b58ee31b561d644 100644 ---- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -+++ b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -@@ -120,6 +120,21 @@ public class Llama extends AbstractChestedHorse implements VariantHolder 676.0D) { diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -index 3de18e1389559678b229a334fb98946810c3f214..35fb0f92a94d141c98b3cd8927c76c35a921e04e 100644 +index 0352e21d54ce58d0ef36df8e68ce74389daa3b5c..8adca393017dcc2e44a7379b971cd2a4704bc570 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java @@ -73,6 +73,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder type, Level world) { super(type, world); -@@ -169,7 +170,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder { @@ -33,10 +33,10 @@ index 5aaac79bafc7f5531a6e3fe0d93a0f66dc0b315a..5e8ff7dd3ff4c27dfad16da9dd8d0a9f int i = world.getRandom().nextInt(100); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index dfb42c035a57893b63c5eced7252a2c16e623506..230a6bc6207a6889859b97b91666bc584a2c7629 100644 +index c466f442711ac2b8956e67f0cddca349e635a6f9..15ec6db30230a6b3ce20c9d4dd2128c056a9f475 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -985,6 +985,8 @@ public class PurpurWorldConfig { +@@ -983,6 +983,8 @@ public class PurpurWorldConfig { public boolean rabbitRidableInWater = false; public boolean rabbitControllable = true; public double rabbitMaxHealth = 3.0D; @@ -45,7 +45,7 @@ index dfb42c035a57893b63c5eced7252a2c16e623506..230a6bc6207a6889859b97b91666bc58 private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -995,6 +997,8 @@ public class PurpurWorldConfig { +@@ -993,6 +995,8 @@ public class PurpurWorldConfig { set("mobs.rabbit.attributes.max_health", oldValue); } rabbitMaxHealth = getDouble("mobs.rabbit.attributes.max_health", rabbitMaxHealth); diff --git a/patches/server/0029-Tulips-change-fox-type.patch b/patches/server/0029-Tulips-change-fox-type.patch index 2cec562d1..678d8ff04 100644 --- a/patches/server/0029-Tulips-change-fox-type.patch +++ b/patches/server/0029-Tulips-change-fox-type.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Tulips change fox type diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index 4883c2a03921da28cbf2bd1978030a9dadbcda52..e2cf88d55aeb1cf8f55292e9171a1b44872bba34 100644 +index 7a6239897d03a0502addc42853414e6d0caa42c3..2119cdd90228f9034781b9496640b159343afbd8 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java @@ -35,6 +35,7 @@ import net.minecraft.util.RandomSource; @@ -75,10 +75,10 @@ index 4883c2a03921da28cbf2bd1978030a9dadbcda52..e2cf88d55aeb1cf8f55292e9171a1b44 // Paper start - Cancellable death event protected org.bukkit.event.entity.EntityDeathEvent dropAllDeathLoot(DamageSource source) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 230a6bc6207a6889859b97b91666bc584a2c7629..86f2ad9c0107fa1c288cfd17810ed7ef0ef51895 100644 +index 15ec6db30230a6b3ce20c9d4dd2128c056a9f475..0ddb21b3f4735082206341bb7e8a7e1bbe318021 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -506,6 +506,7 @@ public class PurpurWorldConfig { +@@ -504,6 +504,7 @@ public class PurpurWorldConfig { public boolean foxRidableInWater = false; public boolean foxControllable = true; public double foxMaxHealth = 10.0D; @@ -86,7 +86,7 @@ index 230a6bc6207a6889859b97b91666bc584a2c7629..86f2ad9c0107fa1c288cfd17810ed7ef private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -516,6 +517,7 @@ public class PurpurWorldConfig { +@@ -514,6 +515,7 @@ public class PurpurWorldConfig { set("mobs.fox.attributes.max_health", oldValue); } foxMaxHealth = getDouble("mobs.fox.attributes.max_health", foxMaxHealth); diff --git a/patches/server/0030-Breedable-Polar-Bears.patch b/patches/server/0030-Breedable-Polar-Bears.patch index d086abb08..d2147ef40 100644 --- a/patches/server/0030-Breedable-Polar-Bears.patch +++ b/patches/server/0030-Breedable-Polar-Bears.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Breedable Polar Bears diff --git a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java -index 0f3234cca23f015651c12076e7064dcd16ecb9d1..dedc36ea78a97fc1303a8b3b328dd1fbef09c25c 100644 +index e7b6e42aabe30b7804bf2d98d2b4d393621e1d7b..e439ce2c0752ee772df888ccccf9d97e45a83b1c 100644 --- a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java +++ b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java @@ -97,6 +97,27 @@ public class PolarBear extends Animal implements NeutralMob { @@ -59,10 +59,10 @@ index 0f3234cca23f015651c12076e7064dcd16ecb9d1..dedc36ea78a97fc1303a8b3b328dd1fb this.goalSelector.addGoal(5, new RandomStrollGoal(this, 1.0D)); this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 86f2ad9c0107fa1c288cfd17810ed7ef0ef51895..06b082617f2852eab62d7c3c803a502a2e1b303e 100644 +index 0ddb21b3f4735082206341bb7e8a7e1bbe318021..8e60360c55b156bfeea4a0f87621e34ce07a2149 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -957,6 +957,8 @@ public class PurpurWorldConfig { +@@ -955,6 +955,8 @@ public class PurpurWorldConfig { public boolean polarBearRidableInWater = false; public boolean polarBearControllable = true; public double polarBearMaxHealth = 30.0D; @@ -71,7 +71,7 @@ index 86f2ad9c0107fa1c288cfd17810ed7ef0ef51895..06b082617f2852eab62d7c3c803a502a private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -967,6 +969,9 @@ public class PurpurWorldConfig { +@@ -965,6 +967,9 @@ public class PurpurWorldConfig { set("mobs.polar_bear.attributes.max_health", oldValue); } polarBearMaxHealth = getDouble("mobs.polar_bear.attributes.max_health", polarBearMaxHealth); diff --git a/patches/server/0031-Chickens-can-retaliate.patch b/patches/server/0031-Chickens-can-retaliate.patch index ed09146cd..fe2d997b7 100644 --- a/patches/server/0031-Chickens-can-retaliate.patch +++ b/patches/server/0031-Chickens-can-retaliate.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Chickens can retaliate diff --git a/src/main/java/net/minecraft/world/entity/animal/Chicken.java b/src/main/java/net/minecraft/world/entity/animal/Chicken.java -index c20f1346a8cf4ee5089dc7c4fc6b3dc36e561dd0..7b668c675b1d8ad55e1e72c8adb08a4ddcb51613 100644 +index f28e6daa41e99f1279c79e2392a76ca6f51c1b4b..4b66412d04a28e3ee0a6e6c5fa0f3f4bf633d2d8 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Chicken.java +++ b/src/main/java/net/minecraft/world/entity/animal/Chicken.java @@ -73,6 +73,9 @@ public class Chicken extends Animal { @@ -51,10 +51,10 @@ index c20f1346a8cf4ee5089dc7c4fc6b3dc36e561dd0..7b668c675b1d8ad55e1e72c8adb08a4d @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 06b082617f2852eab62d7c3c803a502a2e1b303e..6d9c429b91aef725bc0da88c790ef63417595208 100644 +index 8e60360c55b156bfeea4a0f87621e34ce07a2149..b2f115a84c02f33e0bf3bd4270868cff613e3f1e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -296,6 +296,7 @@ public class PurpurWorldConfig { +@@ -294,6 +294,7 @@ public class PurpurWorldConfig { public boolean chickenRidableInWater = false; public boolean chickenControllable = true; public double chickenMaxHealth = 4.0D; @@ -62,7 +62,7 @@ index 06b082617f2852eab62d7c3c803a502a2e1b303e..6d9c429b91aef725bc0da88c790ef634 private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -306,6 +307,7 @@ public class PurpurWorldConfig { +@@ -304,6 +305,7 @@ public class PurpurWorldConfig { set("mobs.chicken.attributes.max_health", oldValue); } chickenMaxHealth = getDouble("mobs.chicken.attributes.max_health", chickenMaxHealth); diff --git a/patches/server/0033-Cat-spawning-options.patch b/patches/server/0033-Cat-spawning-options.patch index b69f64a93..8655f9345 100644 --- a/patches/server/0033-Cat-spawning-options.patch +++ b/patches/server/0033-Cat-spawning-options.patch @@ -51,10 +51,10 @@ index 5f407535298a31a34cfe114dd863fd6a9b977707..29c7e33fe961020e5a0007287fe9b663 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 652f9dc1dc0f31f72d15d2fa99406b4860109b1f..2532c4496504fb8ef2c022c7e90b1505db9c6c54 100644 +index 659306ff7e8dac205de885ebb2b3feee641c6e26..5e4e8c515d8b2c6c4530b047f4f654bb55d9808f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -269,6 +269,9 @@ public class PurpurWorldConfig { +@@ -267,6 +267,9 @@ public class PurpurWorldConfig { public boolean catRidableInWater = false; public boolean catControllable = true; public double catMaxHealth = 10.0D; @@ -64,7 +64,7 @@ index 652f9dc1dc0f31f72d15d2fa99406b4860109b1f..2532c4496504fb8ef2c022c7e90b1505 private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -279,6 +282,9 @@ public class PurpurWorldConfig { +@@ -277,6 +280,9 @@ public class PurpurWorldConfig { set("mobs.cat.attributes.max_health", oldValue); } catMaxHealth = getDouble("mobs.cat.attributes.max_health", catMaxHealth); diff --git a/patches/server/0034-Cows-eat-mushrooms.patch b/patches/server/0034-Cows-eat-mushrooms.patch index ca7ea5949..b75363f16 100644 --- a/patches/server/0034-Cows-eat-mushrooms.patch +++ b/patches/server/0034-Cows-eat-mushrooms.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Cows eat mushrooms diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java -index 7eecdb4be5ee7de39ccb86b4bfe98491f8cba9b6..8744649fbd3f11485d5862d6f1fb32ea27f11e77 100644 +index 29720c0681b5c08e3a7ac5b07c6d83a1760297f1..757b846bb1591c36e6b4413e3a8534986a84233f 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java @@ -2,6 +2,7 @@ package net.minecraft.world.entity.animal; @@ -114,10 +114,10 @@ index 7eecdb4be5ee7de39ccb86b4bfe98491f8cba9b6..8744649fbd3f11485d5862d6f1fb32ea + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2532c4496504fb8ef2c022c7e90b1505db9c6c54..4a4df6ec68ee91287f26033d333895f78c66ced5 100644 +index 5e4e8c515d8b2c6c4530b047f4f654bb55d9808f..b3b1f1f657be2b01d497ad6feff5ed58de3af3e8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -339,6 +339,7 @@ public class PurpurWorldConfig { +@@ -337,6 +337,7 @@ public class PurpurWorldConfig { public boolean cowRidableInWater = false; public boolean cowControllable = true; public double cowMaxHealth = 10.0D; @@ -125,7 +125,7 @@ index 2532c4496504fb8ef2c022c7e90b1505db9c6c54..4a4df6ec68ee91287f26033d333895f7 private void cowSettings() { cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); -@@ -349,6 +350,7 @@ public class PurpurWorldConfig { +@@ -347,6 +348,7 @@ public class PurpurWorldConfig { set("mobs.cow.attributes.max_health", oldValue); } cowMaxHealth = getDouble("mobs.cow.attributes.max_health", cowMaxHealth); diff --git a/patches/server/0036-Pigs-give-saddle-back.patch b/patches/server/0036-Pigs-give-saddle-back.patch index 964e91ce0..84234693d 100644 --- a/patches/server/0036-Pigs-give-saddle-back.patch +++ b/patches/server/0036-Pigs-give-saddle-back.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Pigs give saddle back diff --git a/src/main/java/net/minecraft/world/entity/animal/Pig.java b/src/main/java/net/minecraft/world/entity/animal/Pig.java -index 05db8fa5da085bb3843c11a70affe4c39b6dcd00..2ef7c9b1f10676117fff7b92d12a5dafe64fd7e0 100644 +index 03844563434133a8fab4db4c597d35d4a745a12f..97e2b3a4445d195021a67567c4b0c3346095e7e8 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Pig.java +++ b/src/main/java/net/minecraft/world/entity/animal/Pig.java @@ -174,6 +174,17 @@ public class Pig extends Animal implements ItemSteerable, Saddleable { @@ -27,10 +27,10 @@ index 05db8fa5da085bb3843c11a70affe4c39b6dcd00..2ef7c9b1f10676117fff7b92d12a5daf if (!this.level.isClientSide) { player.startRiding(this); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4a4df6ec68ee91287f26033d333895f78c66ced5..174b13ea9882567e46e35e5b66e9becaebe16c59 100644 +index b3b1f1f657be2b01d497ad6feff5ed58de3af3e8..9fcf8bdd944cf0c7a91cd3032e40d53c44fde9ce 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -908,6 +908,7 @@ public class PurpurWorldConfig { +@@ -906,6 +906,7 @@ public class PurpurWorldConfig { public boolean pigRidableInWater = false; public boolean pigControllable = true; public double pigMaxHealth = 10.0D; @@ -38,7 +38,7 @@ index 4a4df6ec68ee91287f26033d333895f78c66ced5..174b13ea9882567e46e35e5b66e9beca private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -918,6 +919,7 @@ public class PurpurWorldConfig { +@@ -916,6 +917,7 @@ public class PurpurWorldConfig { set("mobs.pig.attributes.max_health", oldValue); } pigMaxHealth = getDouble("mobs.pig.attributes.max_health", pigMaxHealth); diff --git a/patches/server/0037-Snowman-drop-and-put-back-pumpkin.patch b/patches/server/0037-Snowman-drop-and-put-back-pumpkin.patch index 26d6bfa10..e04b2f2a9 100644 --- a/patches/server/0037-Snowman-drop-and-put-back-pumpkin.patch +++ b/patches/server/0037-Snowman-drop-and-put-back-pumpkin.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Snowman drop and put back pumpkin diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -index 3fd7acc96c6c5cd59668c1b5a5a09bd3d188646d..1e24151eef61208db194db612d065922edc16ab1 100644 +index 6f6542f57ed942de91957edf49ef8d92b5233aa8..b6431dbb41163f9ef0d43e96fcf89750c5a6eef7 100644 --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java @@ -191,6 +191,14 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @@ -32,10 +32,10 @@ index 3fd7acc96c6c5cd59668c1b5a5a09bd3d188646d..1e24151eef61208db194db612d065922 this.forceDrops = false; // CraftBukkit } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 174b13ea9882567e46e35e5b66e9becaebe16c59..d2a3f83acb4c7586651a73aa6b2cb7b14f7b89b7 100644 +index 9fcf8bdd944cf0c7a91cd3032e40d53c44fde9ce..06f0fa854cef604fd36073734f4bbf42f3ea497e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1171,6 +1171,8 @@ public class PurpurWorldConfig { +@@ -1169,6 +1169,8 @@ public class PurpurWorldConfig { public boolean snowGolemControllable = true; public boolean snowGolemLeaveTrailWhenRidden = false; public double snowGolemMaxHealth = 4.0D; @@ -44,7 +44,7 @@ index 174b13ea9882567e46e35e5b66e9becaebe16c59..d2a3f83acb4c7586651a73aa6b2cb7b1 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1182,6 +1184,8 @@ public class PurpurWorldConfig { +@@ -1180,6 +1182,8 @@ public class PurpurWorldConfig { set("mobs.snow_golem.attributes.max_health", oldValue); } snowGolemMaxHealth = getDouble("mobs.snow_golem.attributes.max_health", snowGolemMaxHealth); diff --git a/patches/server/0038-Ender-dragon-always-drop-full-exp.patch b/patches/server/0038-Ender-dragon-always-drop-full-exp.patch index 52e2a105e..401c3db6f 100644 --- a/patches/server/0038-Ender-dragon-always-drop-full-exp.patch +++ b/patches/server/0038-Ender-dragon-always-drop-full-exp.patch @@ -18,10 +18,10 @@ index 09ed5144c448f7620b5c856a9fa12da07ec0cce6..1612705ba8cf58286a00b4d542541d17 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d2a3f83acb4c7586651a73aa6b2cb7b14f7b89b7..5b12598509f16dd44f8c256143db6e30c9bd014a 100644 +index 06f0fa854cef604fd36073734f4bbf42f3ea497e..4e33ff9bed768bbcb11a6fbdabfc2b72952b593f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -452,6 +452,7 @@ public class PurpurWorldConfig { +@@ -450,6 +450,7 @@ public class PurpurWorldConfig { public boolean enderDragonControllable = true; public double enderDragonMaxY = 320D; public double enderDragonMaxHealth = 200.0D; @@ -29,7 +29,7 @@ index d2a3f83acb4c7586651a73aa6b2cb7b14f7b89b7..5b12598509f16dd44f8c256143db6e30 private void enderDragonSettings() { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); -@@ -467,6 +468,7 @@ public class PurpurWorldConfig { +@@ -465,6 +466,7 @@ public class PurpurWorldConfig { set("mobs.ender_dragon.attributes.max_health", oldValue); } enderDragonMaxHealth = getDouble("mobs.ender_dragon.attributes.max_health", enderDragonMaxHealth); diff --git a/patches/server/0049-Add-enderman-and-creeper-griefing-controls.patch b/patches/server/0049-Add-enderman-and-creeper-griefing-controls.patch index 27ce013a4..f24a298e6 100644 --- a/patches/server/0049-Add-enderman-and-creeper-griefing-controls.patch +++ b/patches/server/0049-Add-enderman-and-creeper-griefing-controls.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add enderman and creeper griefing controls diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -index 445c8ef18e3c82598b27ebaa6a859d4dd1baf5ef..bdcd271d3755803edc315f7a5484236ad524b1a3 100644 +index c368ac6f35ff4b309079b4895dcd3792f3b6b69e..ccdf278afc5eab5e05649d54ef30d1c27b8b9daa 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java @@ -361,7 +361,7 @@ public class Creeper extends Monster implements PowerableMob { @@ -18,7 +18,7 @@ index 445c8ef18e3c82598b27ebaa6a859d4dd1baf5ef..bdcd271d3755803edc315f7a5484236a this.spawnLingeringCloud(); } else { diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index 94bfabd8d7b4e860a99518b390ad2b7b5ef02070..da8d81bfba08f1e6e2b789e960b1d39692bb990b 100644 +index 6e93faa6debeba159664401a49ddd5ca159abf80..7e67e034cf8b4459f274975567b9c25d7349abf1 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -530,6 +530,7 @@ public class EnderMan extends Monster implements NeutralMob { @@ -38,10 +38,10 @@ index 94bfabd8d7b4e860a99518b390ad2b7b5ef02070..da8d81bfba08f1e6e2b789e960b1d396 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d488ad7fe6119426f6ef269a8916514dddec91a6..dc2d5b50ce5d236fd2de0f82e307f62946df5109 100644 +index e17d6ef06c6125e88986aa01243a6b96360c8114..5bd1546082466cac963cce61c72d2698267f3554 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -439,6 +439,7 @@ public class PurpurWorldConfig { +@@ -437,6 +437,7 @@ public class PurpurWorldConfig { public boolean creeperControllable = true; public double creeperMaxHealth = 20.0D; public double creeperChargedChance = 0.0D; @@ -49,7 +49,7 @@ index d488ad7fe6119426f6ef269a8916514dddec91a6..dc2d5b50ce5d236fd2de0f82e307f629 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -450,6 +451,7 @@ public class PurpurWorldConfig { +@@ -448,6 +449,7 @@ public class PurpurWorldConfig { } creeperMaxHealth = getDouble("mobs.creeper.attributes.max_health", creeperMaxHealth); creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance); @@ -57,7 +57,7 @@ index d488ad7fe6119426f6ef269a8916514dddec91a6..dc2d5b50ce5d236fd2de0f82e307f629 } public boolean dolphinRidable = false; -@@ -556,6 +558,7 @@ public class PurpurWorldConfig { +@@ -554,6 +556,7 @@ public class PurpurWorldConfig { public boolean endermanRidableInWater = false; public boolean endermanControllable = true; public double endermanMaxHealth = 40.0D; @@ -65,7 +65,7 @@ index d488ad7fe6119426f6ef269a8916514dddec91a6..dc2d5b50ce5d236fd2de0f82e307f629 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -566,6 +569,7 @@ public class PurpurWorldConfig { +@@ -564,6 +567,7 @@ public class PurpurWorldConfig { set("mobs.enderman.attributes.max_health", oldValue); } endermanMaxHealth = getDouble("mobs.enderman.attributes.max_health", endermanMaxHealth); diff --git a/patches/server/0050-Villagers-follow-emerald-blocks.patch b/patches/server/0050-Villagers-follow-emerald-blocks.patch index 8b3496c13..2c0da8fe7 100644 --- a/patches/server/0050-Villagers-follow-emerald-blocks.patch +++ b/patches/server/0050-Villagers-follow-emerald-blocks.patch @@ -30,7 +30,7 @@ index ca96b893e22de3ae7c11d5cded51edf70bdcb6f2..d4ab27de59e9c533789f062e74ceb453 // CraftBukkit start private CraftMerchant craftMerchant; diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 94cdb6695a8991c446358854e437ad00970fecc9..fba5e98f5cbbfe03b33bb213b24a7293e19006ca 100644 +index 9c3541a3506f270dd79e52103c4f83ad0df0ae94..3240df0e30b882b8d112e6d92187c1bda0f6973b 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -172,6 +172,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -42,7 +42,7 @@ index 94cdb6695a8991c446358854e437ad00970fecc9..fba5e98f5cbbfe03b33bb213b24a7293 @Override diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -index 649f6a8bb9adac0369e8c57eef0dc35cc21f97b9..92384fecfe804e282c5c05eec0df32b29e0ee97e 100644 +index d2324e2dbd72fcd5a8ab562bc3b6e53088647137..c61e4ee036c60c6eaeabccd9785fb690520fdcf2 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java @@ -111,6 +111,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill @@ -54,10 +54,10 @@ index 649f6a8bb9adac0369e8c57eef0dc35cc21f97b9..92384fecfe804e282c5c05eec0df32b2 this.goalSelector.addGoal(8, new WaterAvoidingRandomStrollGoal(this, 0.35D)); this.goalSelector.addGoal(9, new InteractGoal(this, Player.class, 3.0F, 1.0F)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index dc2d5b50ce5d236fd2de0f82e307f62946df5109..f8a90dd0600a3b0306b6a3ed72f3067881bc3e3b 100644 +index 5bd1546082466cac963cce61c72d2698267f3554..d9ab35ffe3b5c10209b0d3c9de1bb7a66b38e6fe 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1426,6 +1426,7 @@ public class PurpurWorldConfig { +@@ -1424,6 +1424,7 @@ public class PurpurWorldConfig { public boolean villagerRidableInWater = false; public boolean villagerControllable = true; public double villagerMaxHealth = 20.0D; @@ -65,7 +65,7 @@ index dc2d5b50ce5d236fd2de0f82e307f62946df5109..f8a90dd0600a3b0306b6a3ed72f30678 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1436,6 +1437,7 @@ public class PurpurWorldConfig { +@@ -1434,6 +1435,7 @@ public class PurpurWorldConfig { set("mobs.villager.attributes.max_health", oldValue); } villagerMaxHealth = getDouble("mobs.villager.attributes.max_health", villagerMaxHealth); @@ -73,7 +73,7 @@ index dc2d5b50ce5d236fd2de0f82e307f62946df5109..f8a90dd0600a3b0306b6a3ed72f30678 } public boolean vindicatorRidable = false; -@@ -1458,6 +1460,7 @@ public class PurpurWorldConfig { +@@ -1456,6 +1458,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderRidableInWater = false; public boolean wanderingTraderControllable = true; public double wanderingTraderMaxHealth = 20.0D; @@ -81,7 +81,7 @@ index dc2d5b50ce5d236fd2de0f82e307f62946df5109..f8a90dd0600a3b0306b6a3ed72f30678 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -1468,6 +1471,7 @@ public class PurpurWorldConfig { +@@ -1466,6 +1469,7 @@ public class PurpurWorldConfig { set("mobs.wandering_trader.attributes.max_health", oldValue); } wanderingTraderMaxHealth = getDouble("mobs.wandering_trader.attributes.max_health", wanderingTraderMaxHealth); diff --git a/patches/server/0051-Allow-leashing-villagers.patch b/patches/server/0051-Allow-leashing-villagers.patch index cc55c0fbf..a6c3d7004 100644 --- a/patches/server/0051-Allow-leashing-villagers.patch +++ b/patches/server/0051-Allow-leashing-villagers.patch @@ -17,7 +17,7 @@ index 76d8bab7cc1bdbd1946af60a1a2ffef1c7ef4415..636b073f839393c0095f178131e54d18 // Paper start - drop leash variable org.bukkit.event.player.PlayerUnleashEntityEvent event = CraftEventFactory.callPlayerUnleashEntityEvent(this, player, hand, !player.getAbilities().instabuild); diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index fba5e98f5cbbfe03b33bb213b24a7293e19006ca..f4f7bd3d0e84e4dd22815742565d810c37efdc10 100644 +index 3240df0e30b882b8d112e6d92187c1bda0f6973b..cb8ea90c03bcd5ad81d9478abcd556838143850e 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -179,6 +179,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -33,7 +33,7 @@ index fba5e98f5cbbfe03b33bb213b24a7293e19006ca..f4f7bd3d0e84e4dd22815742565d810c @Override diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -index 92384fecfe804e282c5c05eec0df32b29e0ee97e..347c58d8f616d1bfe1c669809465cc37983db6e6 100644 +index c61e4ee036c60c6eaeabccd9785fb690520fdcf2..fbbeacb94aeda40e9fc5c0553ab68948de9019c4 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java @@ -89,6 +89,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill @@ -49,10 +49,10 @@ index 92384fecfe804e282c5c05eec0df32b29e0ee97e..347c58d8f616d1bfe1c669809465cc37 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f8a90dd0600a3b0306b6a3ed72f3067881bc3e3b..e936a56089d0f0823c6fc2103b21c1549127ec84 100644 +index d9ab35ffe3b5c10209b0d3c9de1bb7a66b38e6fe..a8d607729fe645bfc2cd51d2374876c4dcfb389c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1427,6 +1427,7 @@ public class PurpurWorldConfig { +@@ -1425,6 +1425,7 @@ public class PurpurWorldConfig { public boolean villagerControllable = true; public double villagerMaxHealth = 20.0D; public boolean villagerFollowEmeraldBlock = false; @@ -60,7 +60,7 @@ index f8a90dd0600a3b0306b6a3ed72f3067881bc3e3b..e936a56089d0f0823c6fc2103b21c154 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1438,6 +1439,7 @@ public class PurpurWorldConfig { +@@ -1436,6 +1437,7 @@ public class PurpurWorldConfig { } villagerMaxHealth = getDouble("mobs.villager.attributes.max_health", villagerMaxHealth); villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock); @@ -68,7 +68,7 @@ index f8a90dd0600a3b0306b6a3ed72f3067881bc3e3b..e936a56089d0f0823c6fc2103b21c154 } public boolean vindicatorRidable = false; -@@ -1461,6 +1463,7 @@ public class PurpurWorldConfig { +@@ -1459,6 +1461,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderControllable = true; public double wanderingTraderMaxHealth = 20.0D; public boolean wanderingTraderFollowEmeraldBlock = false; @@ -76,7 +76,7 @@ index f8a90dd0600a3b0306b6a3ed72f3067881bc3e3b..e936a56089d0f0823c6fc2103b21c154 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -1472,6 +1475,7 @@ public class PurpurWorldConfig { +@@ -1470,6 +1473,7 @@ public class PurpurWorldConfig { } wanderingTraderMaxHealth = getDouble("mobs.wandering_trader.attributes.max_health", wanderingTraderMaxHealth); wanderingTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", wanderingTraderFollowEmeraldBlock); diff --git a/patches/server/0062-Item-entity-immunities.patch b/patches/server/0062-Item-entity-immunities.patch index d98d7c9de..c04d888a6 100644 --- a/patches/server/0062-Item-entity-immunities.patch +++ b/patches/server/0062-Item-entity-immunities.patch @@ -18,7 +18,7 @@ index b7fd8e70413c38923d0719aff803449e392383ac..11d7aef930ca283950f7b353b033f3ec public ServerEntity(ServerLevel worldserver, Entity entity, int i, boolean flag, Consumer> consumer, Set trackedPlayers) { this.trackedPlayers = trackedPlayers; diff --git a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java -index d47b3ac633e7936d30abfda6fc46c2c7412d76fe..e7b5a5a1eb62095688b00a8ea35b0636c081790b 100644 +index d47b3ac633e7936d30abfda6fc46c2c7412d76fe..1b7784666312d50a957d023c2bf869194ee9e593 100644 --- a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java +++ b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java @@ -55,6 +55,12 @@ public class ItemEntity extends Entity implements TraceableEntity { @@ -40,10 +40,10 @@ index d47b3ac633e7936d30abfda6fc46c2c7412d76fe..e7b5a5a1eb62095688b00a8ea35b0636 return false; + // Purpur start + } else if ( -+ (immuneToCactus && source == DamageSource.CACTUS) || -+ (immuneToFire && (source.isFire() || source == DamageSource.IN_FIRE)) || -+ (immuneToLightning && source == DamageSource.LIGHTNING_BOLT) || -+ (immuneToExplosion && source.isExplosion()) ++ (immuneToCactus && source.is(net.minecraft.world.damagesource.DamageTypes.CACTUS)) || ++ (immuneToFire && (source.is(DamageTypeTags.IS_FIRE) && source.is(net.minecraft.world.damagesource.DamageTypes.IN_FIRE)) || ++ (immuneToLightning && source.is(net.minecraft.world.damagesource.DamageTypes.LIGHTNING_BOLT)) || ++ (immuneToExplosion && source.is(DamageTypeTags.IS_EXPLOSION))) + ) { + return false; + // Purpur end @@ -115,7 +115,7 @@ index a925b5c490e7129b27370aa57b5fad1cf05530c6..09001578b88658c44d0661d340a0ee0f + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6874fba170f4dee579788025e5d8fae9c75b9535..cb09d85bcac1f54d76b8b336ddc2093e3afb42ef 100644 +index 55b7f582c6bc06412900e843c3263a69e67d2af5..ead0ea1613da4a23fe20283555f3dd7e55299073 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -127,6 +127,49 @@ public class PurpurWorldConfig { diff --git a/patches/server/0066-Configurable-jockey-options.patch b/patches/server/0066-Configurable-jockey-options.patch index 9e41ac83f..269bee205 100644 --- a/patches/server/0066-Configurable-jockey-options.patch +++ b/patches/server/0066-Configurable-jockey-options.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable jockey options diff --git a/src/main/java/net/minecraft/world/entity/monster/Drowned.java b/src/main/java/net/minecraft/world/entity/monster/Drowned.java -index 0d246aabc114145c349ac251364856530672c9e3..68b5be9b8b0a243ef8f1fed35c921854e1664741 100644 +index edfc149ef228954fe0900439c8bf25f4249b28e2..9005034e99e0398cf7b2cca528fbe55d4baa2e9d 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java +++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java @@ -93,6 +93,21 @@ public class Drowned extends Zombie implements RangedAttackMob { @@ -31,7 +31,7 @@ index 0d246aabc114145c349ac251364856530672c9e3..68b5be9b8b0a243ef8f1fed35c921854 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Husk.java b/src/main/java/net/minecraft/world/entity/monster/Husk.java -index e41cc68649c79dd4ce7455f36112e8347e7c84e6..22daf7d11890a2e9276928ac9b242edf932e11cb 100644 +index 80bb77199791a312216e8366275e5b0e1c8b14fa..874e3a4adf3d4e688a240f29888ee0bbaaacc9dc 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Husk.java +++ b/src/main/java/net/minecraft/world/entity/monster/Husk.java @@ -47,6 +47,21 @@ public class Husk extends Zombie { @@ -57,7 +57,7 @@ index e41cc68649c79dd4ce7455f36112e8347e7c84e6..22daf7d11890a2e9276928ac9b242edf public static boolean checkHuskSpawnRules(EntityType type, ServerLevelAccessor world, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index 62f607a3d34511a7f3b90739265ea1b825b517de..05cb9eff1ce0d5af9efcd47033878feb22397a2d 100644 +index afe866e4a41a824bcfb9aa70779c52381386c472..4a38fec232e2a087f8ef3f7a0c8fff17ddd714d0 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -126,6 +126,18 @@ public class Zombie extends Monster { @@ -115,7 +115,7 @@ index 62f607a3d34511a7f3b90739265ea1b825b517de..05cb9eff1ce0d5af9efcd47033878feb } } diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -index 5bd562ce81955ea8c75e08f69d4a033040a6c679..24bd4b83b37e65606db9b371db458dcc4a16d419 100644 +index d24e41ac992972d1679c279b10290c01db73a5b5..0f12e4ac6eab349418328a80a2b02fa27ce3f39b 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java @@ -104,6 +104,21 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { @@ -141,7 +141,7 @@ index 5bd562ce81955ea8c75e08f69d4a033040a6c679..24bd4b83b37e65606db9b371db458dcc @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java -index aca84be04c50188612f69ee20e9a0948fe5e5b7f..9bec6222a8145f84f4b748e8c96e02fa0d6f14d2 100644 +index cdeb39d02b618b648681ca51a592b7b3508e46f5..b5b4cb3fefd769f5d8ec5b60b4b41ffb023d19c5 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java @@ -83,6 +83,21 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { @@ -167,10 +167,10 @@ index aca84be04c50188612f69ee20e9a0948fe5e5b7f..9bec6222a8145f84f4b748e8c96e02fa @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cb09d85bcac1f54d76b8b336ddc2093e3afb42ef..5f01c36ee74d1cec94be0a5c54920c80327fd1ea 100644 +index 803d2da4dd2922adfdb6bcb261073b89024b87f5..8d0c535b30bf61f56f5f62c851fdc627f25a9be6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -590,6 +590,9 @@ public class PurpurWorldConfig { +@@ -588,6 +588,9 @@ public class PurpurWorldConfig { public boolean drownedControllable = true; public double drownedMaxHealth = 20.0D; public double drownedSpawnReinforcements = 0.1D; @@ -180,7 +180,7 @@ index cb09d85bcac1f54d76b8b336ddc2093e3afb42ef..5f01c36ee74d1cec94be0a5c54920c80 private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -601,6 +604,9 @@ public class PurpurWorldConfig { +@@ -599,6 +602,9 @@ public class PurpurWorldConfig { } drownedMaxHealth = getDouble("mobs.drowned.attributes.max_health", drownedMaxHealth); drownedSpawnReinforcements = getDouble("mobs.drowned.attributes.spawn_reinforcements", drownedSpawnReinforcements); @@ -190,7 +190,7 @@ index cb09d85bcac1f54d76b8b336ddc2093e3afb42ef..5f01c36ee74d1cec94be0a5c54920c80 } public boolean elderGuardianRidable = false; -@@ -849,6 +855,9 @@ public class PurpurWorldConfig { +@@ -847,6 +853,9 @@ public class PurpurWorldConfig { public boolean huskControllable = true; public double huskMaxHealth = 20.0D; public double huskSpawnReinforcements = 0.1D; @@ -200,7 +200,7 @@ index cb09d85bcac1f54d76b8b336ddc2093e3afb42ef..5f01c36ee74d1cec94be0a5c54920c80 private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -860,6 +869,9 @@ public class PurpurWorldConfig { +@@ -858,6 +867,9 @@ public class PurpurWorldConfig { } huskMaxHealth = getDouble("mobs.husk.attributes.max_health", huskMaxHealth); huskSpawnReinforcements = getDouble("mobs.husk.attributes.spawn_reinforcements", huskSpawnReinforcements); @@ -210,7 +210,7 @@ index cb09d85bcac1f54d76b8b336ddc2093e3afb42ef..5f01c36ee74d1cec94be0a5c54920c80 } public boolean illusionerRidable = false; -@@ -1665,6 +1677,9 @@ public class PurpurWorldConfig { +@@ -1663,6 +1675,9 @@ public class PurpurWorldConfig { public boolean zombieControllable = true; public double zombieMaxHealth = 20.0D; public double zombieSpawnReinforcements = 0.1D; @@ -220,7 +220,7 @@ index cb09d85bcac1f54d76b8b336ddc2093e3afb42ef..5f01c36ee74d1cec94be0a5c54920c80 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -1676,6 +1691,9 @@ public class PurpurWorldConfig { +@@ -1674,6 +1689,9 @@ public class PurpurWorldConfig { } zombieMaxHealth = getDouble("mobs.zombie.attributes.max_health", zombieMaxHealth); zombieSpawnReinforcements = getDouble("mobs.zombie.attributes.spawn_reinforcements", zombieSpawnReinforcements); @@ -230,7 +230,7 @@ index cb09d85bcac1f54d76b8b336ddc2093e3afb42ef..5f01c36ee74d1cec94be0a5c54920c80 } public boolean zombieHorseRidableInWater = false; -@@ -1710,6 +1728,9 @@ public class PurpurWorldConfig { +@@ -1708,6 +1726,9 @@ public class PurpurWorldConfig { public boolean zombieVillagerControllable = true; public double zombieVillagerMaxHealth = 20.0D; public double zombieVillagerSpawnReinforcements = 0.1D; @@ -240,7 +240,7 @@ index cb09d85bcac1f54d76b8b336ddc2093e3afb42ef..5f01c36ee74d1cec94be0a5c54920c80 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -1721,6 +1742,9 @@ public class PurpurWorldConfig { +@@ -1719,6 +1740,9 @@ public class PurpurWorldConfig { } zombieVillagerMaxHealth = getDouble("mobs.zombie_villager.attributes.max_health", zombieVillagerMaxHealth); zombieVillagerSpawnReinforcements = getDouble("mobs.zombie_villager.attributes.spawn_reinforcements", zombieVillagerSpawnReinforcements); @@ -250,7 +250,7 @@ index cb09d85bcac1f54d76b8b336ddc2093e3afb42ef..5f01c36ee74d1cec94be0a5c54920c80 } public boolean zombifiedPiglinRidable = false; -@@ -1728,6 +1752,9 @@ public class PurpurWorldConfig { +@@ -1726,6 +1750,9 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinControllable = true; public double zombifiedPiglinMaxHealth = 20.0D; public double zombifiedPiglinSpawnReinforcements = 0.0D; @@ -260,7 +260,7 @@ index cb09d85bcac1f54d76b8b336ddc2093e3afb42ef..5f01c36ee74d1cec94be0a5c54920c80 private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -1739,5 +1766,8 @@ public class PurpurWorldConfig { +@@ -1737,5 +1764,8 @@ public class PurpurWorldConfig { } zombifiedPiglinMaxHealth = getDouble("mobs.zombified_piglin.attributes.max_health", zombifiedPiglinMaxHealth); zombifiedPiglinSpawnReinforcements = getDouble("mobs.zombified_piglin.attributes.spawn_reinforcements", zombifiedPiglinSpawnReinforcements); diff --git a/patches/server/0067-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch b/patches/server/0067-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch index 39b8d8f11..581f6d3c6 100644 --- a/patches/server/0067-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch +++ b/patches/server/0067-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Phantoms attracted to crystals and crystals shoot phantoms diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java -index 64f17b4a22454b59968787089253eaba0a04c1f2..d3ca70fac31b7ff64035e0a311e1db7e5a611816 100644 +index 64f17b4a22454b59968787089253eaba0a04c1f2..b373f9e4b5a2604bcbccd36cd3de961f3a41cd32 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java @@ -30,6 +30,12 @@ public class EndCrystal extends Entity { @@ -44,7 +44,7 @@ index 64f17b4a22454b59968787089253eaba0a04c1f2..d3ca70fac31b7ff64035e0a311e1db7e + if (targetPhantom.hasLineOfSight(this)) { + if (phantomDamageCooldown <= 0) { + phantomDamageCooldown = 20; -+ targetPhantom.hurt(DamageSource.indirectMagic(this, this), level.purpurConfig.phantomAttackedByCrystalDamage); ++ targetPhantom.hurt(targetPhantom.damageSources().indirectMagic(this, this), level.purpurConfig.phantomAttackedByCrystalDamage); + } + } else { + forgetPhantom(); // no longer in sight @@ -73,7 +73,7 @@ index 64f17b4a22454b59968787089253eaba0a04c1f2..d3ca70fac31b7ff64035e0a311e1db7e @Override protected void addAdditionalSaveData(CompoundTag nbt) { diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -index 5ee85ed1f5ae3d50c17591ffa92d79b218454b7d..7514bcdcc29c9d10393aaf8c08cee635efdbd3fe 100644 +index cabe7101fc6e43ece67f7e4f647dd2eef1255c60..f608e7dcdb899608ff2f4d19b274861170c9694a 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java @@ -49,6 +49,7 @@ public class Phantom extends FlyingMob implements Enemy { @@ -258,10 +258,10 @@ index 5ee85ed1f5ae3d50c17591ffa92d79b218454b7d..7514bcdcc29c9d10393aaf8c08cee635 private float speed = 0.1F; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5f01c36ee74d1cec94be0a5c54920c80327fd1ea..6d343b2a737cf4aeb0f6fe2aee55bb7088e9b73f 100644 +index 8d0c535b30bf61f56f5f62c851fdc627f25a9be6..ae0942b76923d34ac80885d6fe6e0a2ee7932a84 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1067,6 +1067,9 @@ public class PurpurWorldConfig { +@@ -1065,6 +1065,9 @@ public class PurpurWorldConfig { public String phantomAttackDamage = "6 + size"; public Map phantomMaxHealthCache = new HashMap<>(); public Map phantomAttackDamageCache = new HashMap<>(); @@ -271,7 +271,7 @@ index 5f01c36ee74d1cec94be0a5c54920c80327fd1ea..6d343b2a737cf4aeb0f6fe2aee55bb70 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1088,6 +1091,9 @@ public class PurpurWorldConfig { +@@ -1086,6 +1089,9 @@ public class PurpurWorldConfig { phantomAttackDamage = getString("mobs.phantom.attributes.attack_damage", phantomAttackDamage); phantomMaxHealthCache.clear(); phantomAttackDamageCache.clear(); diff --git a/patches/server/0068-Add-phantom-spawning-options.patch b/patches/server/0068-Add-phantom-spawning-options.patch index ae869d0e5..7e947f41b 100644 --- a/patches/server/0068-Add-phantom-spawning-options.patch +++ b/patches/server/0068-Add-phantom-spawning-options.patch @@ -40,10 +40,10 @@ index e8ae4449696d73c8c9b8b27d4d2e20db933a72cc..f55c50f6637a4f930b15565d6ac82bb4 for (int l = 0; l < k; ++l) { // Paper start diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6d343b2a737cf4aeb0f6fe2aee55bb7088e9b73f..25e392910e20edd7bdaf6e1be20d5ff075cde65e 100644 +index ae0942b76923d34ac80885d6fe6e0a2ee7932a84..76818776d647dea7cdad6ff532dac696b8258c06 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1070,6 +1070,12 @@ public class PurpurWorldConfig { +@@ -1068,6 +1068,12 @@ public class PurpurWorldConfig { public double phantomAttackedByCrystalRadius = 0.0D; public float phantomAttackedByCrystalDamage = 1.0F; public double phantomOrbitCrystalRadius = 0.0D; @@ -56,7 +56,7 @@ index 6d343b2a737cf4aeb0f6fe2aee55bb7088e9b73f..25e392910e20edd7bdaf6e1be20d5ff0 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1094,6 +1100,12 @@ public class PurpurWorldConfig { +@@ -1092,6 +1098,12 @@ public class PurpurWorldConfig { phantomAttackedByCrystalRadius = getDouble("mobs.phantom.attacked-by-crystal-range", phantomAttackedByCrystalRadius); phantomAttackedByCrystalDamage = (float) getDouble("mobs.phantom.attacked-by-crystal-damage", phantomAttackedByCrystalDamage); phantomOrbitCrystalRadius = getDouble("mobs.phantom.orbit-crystal-radius", phantomOrbitCrystalRadius); diff --git a/patches/server/0075-Squid-EAR-immunity.patch b/patches/server/0075-Squid-EAR-immunity.patch index 918fefd07..457061380 100644 --- a/patches/server/0075-Squid-EAR-immunity.patch +++ b/patches/server/0075-Squid-EAR-immunity.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Squid EAR immunity diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0b1b14746be9aa10fb5d48b820395b505e79cb74..b60cdc090e21de74a4b8a54385ce2d9e4f9e3820 100644 +index c85d096834fea5ed4f6805267226b34cf0bb79ac..3ddbfdfe9422f7c1f87f9a26d35ad11507b93573 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1444,6 +1444,7 @@ public class PurpurWorldConfig { +@@ -1442,6 +1442,7 @@ public class PurpurWorldConfig { public boolean squidRidable = false; public boolean squidControllable = true; public double squidMaxHealth = 10.0D; @@ -16,7 +16,7 @@ index 0b1b14746be9aa10fb5d48b820395b505e79cb74..b60cdc090e21de74a4b8a54385ce2d9e private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1453,6 +1454,7 @@ public class PurpurWorldConfig { +@@ -1451,6 +1452,7 @@ public class PurpurWorldConfig { set("mobs.squid.attributes.max_health", oldValue); } squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); diff --git a/patches/server/0076-Phantoms-burn-in-light.patch b/patches/server/0076-Phantoms-burn-in-light.patch index 17fa75ca2..29aebb116 100644 --- a/patches/server/0076-Phantoms-burn-in-light.patch +++ b/patches/server/0076-Phantoms-burn-in-light.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Phantoms burn in light diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -index 7514bcdcc29c9d10393aaf8c08cee635efdbd3fe..223aa8f7f8ea2a15e4dcf62aef3521382c9ab7cd 100644 +index f608e7dcdb899608ff2f4d19b274861170c9694a..b35d737cf492f16952deff21098e48b6949d98ff 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java @@ -50,6 +50,7 @@ public class Phantom extends FlyingMob implements Enemy { @@ -53,10 +53,10 @@ index 7514bcdcc29c9d10393aaf8c08cee635efdbd3fe..223aa8f7f8ea2a15e4dcf62aef352138 list.sort(Comparator.comparing((Entity e) -> { return e.getY(); }).reversed()); // CraftBukkit - decompile error Iterator iterator = list.iterator(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b60cdc090e21de74a4b8a54385ce2d9e4f9e3820..d53a80f1a5040fa96977febaffb8ae089c577651 100644 +index 3ddbfdfe9422f7c1f87f9a26d35ad11507b93573..9c4a016d9567e0e6737e60d7518a23537ef87bd7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1125,6 +1125,9 @@ public class PurpurWorldConfig { +@@ -1123,6 +1123,9 @@ public class PurpurWorldConfig { public double phantomSpawnLocalDifficultyChance = 3.0D; public int phantomSpawnMinPerAttempt = 1; public int phantomSpawnMaxPerAttempt = -1; @@ -66,7 +66,7 @@ index b60cdc090e21de74a4b8a54385ce2d9e4f9e3820..d53a80f1a5040fa96977febaffb8ae08 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1155,6 +1158,9 @@ public class PurpurWorldConfig { +@@ -1153,6 +1156,9 @@ public class PurpurWorldConfig { phantomSpawnLocalDifficultyChance = getDouble("mobs.phantom.spawn.local-difficulty-chance", phantomSpawnLocalDifficultyChance); phantomSpawnMinPerAttempt = getInt("mobs.phantom.spawn.per-attempt.min", phantomSpawnMinPerAttempt); phantomSpawnMaxPerAttempt = getInt("mobs.phantom.spawn.per-attempt.max", phantomSpawnMaxPerAttempt); diff --git a/patches/server/0077-Configurable-villager-breeding.patch b/patches/server/0077-Configurable-villager-breeding.patch index ec6f28a87..48ed0aeaa 100644 --- a/patches/server/0077-Configurable-villager-breeding.patch +++ b/patches/server/0077-Configurable-villager-breeding.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable villager breeding diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index f4f7bd3d0e84e4dd22815742565d810c37efdc10..07a78cc272cd1c4857034c3374295e3c34563a2d 100644 +index cb8ea90c03bcd5ad81d9478abcd556838143850e..ab3497bd22beffaf7a66bdd502b9e1bfc6478881 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -775,7 +775,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -18,10 +18,10 @@ index f4f7bd3d0e84e4dd22815742565d810c37efdc10..07a78cc272cd1c4857034c3374295e3c private boolean hungry() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d53a80f1a5040fa96977febaffb8ae089c577651..d1cd6f374f4ea26bfbb40a8918a34082e72be491 100644 +index 9c4a016d9567e0e6737e60d7518a23537ef87bd7..c0fa33bf963055dee50b03cec6e284fa02f41c61 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1602,6 +1602,7 @@ public class PurpurWorldConfig { +@@ -1600,6 +1600,7 @@ public class PurpurWorldConfig { public double villagerMaxHealth = 20.0D; public boolean villagerFollowEmeraldBlock = false; public boolean villagerCanBeLeashed = false; @@ -29,7 +29,7 @@ index d53a80f1a5040fa96977febaffb8ae089c577651..d1cd6f374f4ea26bfbb40a8918a34082 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1614,6 +1615,7 @@ public class PurpurWorldConfig { +@@ -1612,6 +1613,7 @@ public class PurpurWorldConfig { villagerMaxHealth = getDouble("mobs.villager.attributes.max_health", villagerMaxHealth); villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock); villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); diff --git a/patches/server/0080-Add-vindicator-johnny-spawn-chance.patch b/patches/server/0080-Add-vindicator-johnny-spawn-chance.patch index bb78b7b2d..c798b2eac 100644 --- a/patches/server/0080-Add-vindicator-johnny-spawn-chance.patch +++ b/patches/server/0080-Add-vindicator-johnny-spawn-chance.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add vindicator johnny spawn chance diff --git a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java -index c3b8bce2d8e1dccb619267923964e06abfed8762..021550a0465dd1fd152b4c2e763014058730e8ca 100644 +index 32c7836fcceaeee018dd965f77ac1d2c2ab45ea0..5e732fd80cd0ac814e56c741717e333500fcc334 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java +++ b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java @@ -154,6 +154,12 @@ public class Vindicator extends AbstractIllager { @@ -22,10 +22,10 @@ index c3b8bce2d8e1dccb619267923964e06abfed8762..021550a0465dd1fd152b4c2e76301405 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 68dda88f2d6eea8fb84f3db5877375e33a87b204..88bd6c7e9902002dcdb5997ae5294fd5f99a2142 100644 +index 33913d10ac708aa682a9384c016097ed20c91a20..30ae5a63acc91b943c6c08b5e44e4648a3d7f3e6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1629,6 +1629,7 @@ public class PurpurWorldConfig { +@@ -1627,6 +1627,7 @@ public class PurpurWorldConfig { public boolean vindicatorRidableInWater = false; public boolean vindicatorControllable = true; public double vindicatorMaxHealth = 24.0D; @@ -33,7 +33,7 @@ index 68dda88f2d6eea8fb84f3db5877375e33a87b204..88bd6c7e9902002dcdb5997ae5294fd5 private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -1639,6 +1640,7 @@ public class PurpurWorldConfig { +@@ -1637,6 +1638,7 @@ public class PurpurWorldConfig { set("mobs.vindicator.attributes.max_health", oldValue); } vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); diff --git a/patches/server/0084-Add-option-to-disable-dolphin-treasure-searching.patch b/patches/server/0084-Add-option-to-disable-dolphin-treasure-searching.patch index 8e86d8b68..67848f94f 100644 --- a/patches/server/0084-Add-option-to-disable-dolphin-treasure-searching.patch +++ b/patches/server/0084-Add-option-to-disable-dolphin-treasure-searching.patch @@ -17,10 +17,10 @@ index 0accc5595461ce92259e3f819a9837aabd442d77..3b65375703732966d0fcbbb68ba0805e } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 05404b37c6a1974ead2f630cf5405c9489cc6463..7e7c373e7e4b49e43722f006b643b4a760b8ecfe 100644 +index 8be6041d428f229f250ec4ed3de23d436371e8b9..4b72a70baa59c4411900a0f152d144318e8636fa 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -612,6 +612,7 @@ public class PurpurWorldConfig { +@@ -610,6 +610,7 @@ public class PurpurWorldConfig { public float dolphinSpitSpeed = 1.0F; public float dolphinSpitDamage = 2.0F; public double dolphinMaxHealth = 10.0D; @@ -28,7 +28,7 @@ index 05404b37c6a1974ead2f630cf5405c9489cc6463..7e7c373e7e4b49e43722f006b643b4a7 private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -624,6 +625,7 @@ public class PurpurWorldConfig { +@@ -622,6 +623,7 @@ public class PurpurWorldConfig { set("mobs.dolphin.attributes.max_health", oldValue); } dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth); diff --git a/patches/server/0086-Stop-squids-floating-on-top-of-water.patch b/patches/server/0086-Stop-squids-floating-on-top-of-water.patch index 08b910b06..9b0d9a6b9 100644 --- a/patches/server/0086-Stop-squids-floating-on-top-of-water.patch +++ b/patches/server/0086-Stop-squids-floating-on-top-of-water.patch @@ -54,10 +54,10 @@ index ffc76354ead6937daf366c3d87bcb51d3e4c47f5..5b98d42b5d6bc07265fbb017e51a6281 + // Purpur } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7e7c373e7e4b49e43722f006b643b4a760b8ecfe..73039cf2e685514a7c6a553310c27c4d42b06054 100644 +index 4b72a70baa59c4411900a0f152d144318e8636fa..c5b4db93286c73a49ff3f48e5a761f1ccb96780b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1469,6 +1469,7 @@ public class PurpurWorldConfig { +@@ -1467,6 +1467,7 @@ public class PurpurWorldConfig { public boolean squidControllable = true; public double squidMaxHealth = 10.0D; public boolean squidImmuneToEAR = true; @@ -65,7 +65,7 @@ index 7e7c373e7e4b49e43722f006b643b4a760b8ecfe..73039cf2e685514a7c6a553310c27c4d private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1479,6 +1480,7 @@ public class PurpurWorldConfig { +@@ -1477,6 +1478,7 @@ public class PurpurWorldConfig { } squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); diff --git a/patches/server/0090-Customizable-wither-health-and-healing.patch b/patches/server/0090-Customizable-wither-health-and-healing.patch index adec01dfc..a8eab5e81 100644 --- a/patches/server/0090-Customizable-wither-health-and-healing.patch +++ b/patches/server/0090-Customizable-wither-health-and-healing.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Customizable wither health and healing Adds the ability to customize the health of the wither, as well as the amount that it heals, and how often. diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -index 18ecfcc97b17f3009057c97159a24583d3dc61e5..b4a8c219f609ba9f707edd0afe8abb69c7c0a510 100644 +index 52cf58145788da4cb0ec447d1cf485f86141d1d8..631349e333fcc8285b7f23dec86275d0f0bee0ca 100644 --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java @@ -529,8 +529,10 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @@ -23,10 +23,10 @@ index 18ecfcc97b17f3009057c97159a24583d3dc61e5..b4a8c219f609ba9f707edd0afe8abb69 this.bossEvent.setProgress(this.getHealth() / this.getMaxHealth()); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 049aed0affed3a169c79fbd8371bf452a249e65a..f24ea5c30b5a608ee3b0d5dc7e17af1447391471 100644 +index 4603aacc827aef7dd71096525703932ac3aed0c8..69984de957b742137588a5d5be7f7c2539515e2e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1708,6 +1708,8 @@ public class PurpurWorldConfig { +@@ -1706,6 +1706,8 @@ public class PurpurWorldConfig { public boolean witherControllable = true; public double witherMaxY = 320D; public double witherMaxHealth = 300.0D; @@ -35,7 +35,7 @@ index 049aed0affed3a169c79fbd8371bf452a249e65a..f24ea5c30b5a608ee3b0d5dc7e17af14 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -1723,6 +1725,8 @@ public class PurpurWorldConfig { +@@ -1721,6 +1723,8 @@ public class PurpurWorldConfig { set("mobs.wither.attributes.max_health", oldValue); } witherMaxHealth = getDouble("mobs.wither.attributes.max_health", witherMaxHealth); diff --git a/patches/server/0094-Add-option-to-disable-zombie-aggressiveness-towards-.patch b/patches/server/0094-Add-option-to-disable-zombie-aggressiveness-towards-.patch index d6f851add..c559a4363 100644 --- a/patches/server/0094-Add-option-to-disable-zombie-aggressiveness-towards-.patch +++ b/patches/server/0094-Add-option-to-disable-zombie-aggressiveness-towards-.patch @@ -21,7 +21,7 @@ index a08c00b8c0488d18be5e182f7892e5ab71d12247..338f693d098b6ab507c30f6411c9a952 ignored.add("goal_selector_1"); ignored.add("goal_selector_2"); diff --git a/src/main/java/net/minecraft/world/entity/monster/Drowned.java b/src/main/java/net/minecraft/world/entity/monster/Drowned.java -index 68b5be9b8b0a243ef8f1fed35c921854e1664741..e141dc0e13206bfdfbd39116edbcd49887a76cd2 100644 +index 9005034e99e0398cf7b2cca528fbe55d4baa2e9d..25b71ea8f18946a5de60eee5a075309033312a5c 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java +++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java @@ -120,7 +120,19 @@ public class Drowned extends Zombie implements RangedAttackMob { @@ -46,7 +46,7 @@ index 68b5be9b8b0a243ef8f1fed35c921854e1664741..e141dc0e13206bfdfbd39116edbcd498 this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Axolotl.class, true, false)); this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, true, false, Turtle.BABY_ON_LAND_SELECTOR)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index 05cb9eff1ce0d5af9efcd47033878feb22397a2d..35e1e8264d9f1e30b37ad598adab478b4c99ada3 100644 +index 4a38fec232e2a087f8ef3f7a0c8fff17ddd714d0..0d4abed58cd14f7804e61c6e6a62891c71fb9f0a 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -156,7 +156,19 @@ public class Zombie extends Monster { @@ -71,10 +71,10 @@ index 05cb9eff1ce0d5af9efcd47033878feb22397a2d..35e1e8264d9f1e30b37ad598adab478b this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, true, false, Turtle.BABY_ON_LAND_SELECTOR)); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 185d1055a5f9567707f5464c447a3d496ad1331d..29bca2e7ba8c0f57d65695ec846d625a88a687a3 100644 +index 4556563c317ca919cddf354e97eb581cb8371916..5bf6c17747fcd7059b9a434f7f185f432e90bee4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1841,6 +1841,7 @@ public class PurpurWorldConfig { +@@ -1839,6 +1839,7 @@ public class PurpurWorldConfig { public boolean zombieJockeyOnlyBaby = true; public double zombieJockeyChance = 0.05D; public boolean zombieJockeyTryExistingChickens = true; @@ -82,7 +82,7 @@ index 185d1055a5f9567707f5464c447a3d496ad1331d..29bca2e7ba8c0f57d65695ec846d625a private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -1855,6 +1856,7 @@ public class PurpurWorldConfig { +@@ -1853,6 +1854,7 @@ public class PurpurWorldConfig { zombieJockeyOnlyBaby = getBoolean("mobs.zombie.jockey.only-babies", zombieJockeyOnlyBaby); zombieJockeyChance = getDouble("mobs.zombie.jockey.chance", zombieJockeyChance); zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens); diff --git a/patches/server/0096-Flying-squids-Oh-my.patch b/patches/server/0096-Flying-squids-Oh-my.patch index ca4ae1e0f..28640e8b8 100644 --- a/patches/server/0096-Flying-squids-Oh-my.patch +++ b/patches/server/0096-Flying-squids-Oh-my.patch @@ -58,10 +58,10 @@ index de1bf4aea2661763948aba01d93e7685f3ef73cb..c396874d24ae535b4c07649e303e60b7 float f1 = Mth.cos(f) * 0.2F; float f2 = -0.1F + this.squid.getRandom().nextFloat() * 0.2F; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 29bca2e7ba8c0f57d65695ec846d625a88a687a3..19f16d8b71ba7fe636326ef0990134518c7ab1ed 100644 +index 5bf6c17747fcd7059b9a434f7f185f432e90bee4..bbb562478d11f4bf4b4f4efc228b911a736506a4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -904,10 +904,12 @@ public class PurpurWorldConfig { +@@ -902,10 +902,12 @@ public class PurpurWorldConfig { public boolean glowSquidRidable = false; public boolean glowSquidControllable = true; public double glowSquidMaxHealth = 10.0D; @@ -74,7 +74,7 @@ index 29bca2e7ba8c0f57d65695ec846d625a88a687a3..19f16d8b71ba7fe636326ef099013451 } public boolean goatRidable = false; -@@ -1528,6 +1530,7 @@ public class PurpurWorldConfig { +@@ -1526,6 +1528,7 @@ public class PurpurWorldConfig { public double squidMaxHealth = 10.0D; public boolean squidImmuneToEAR = true; public double squidOffsetWaterCheck = 0.0D; @@ -82,7 +82,7 @@ index 29bca2e7ba8c0f57d65695ec846d625a88a687a3..19f16d8b71ba7fe636326ef099013451 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1539,6 +1542,7 @@ public class PurpurWorldConfig { +@@ -1537,6 +1540,7 @@ public class PurpurWorldConfig { squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); diff --git a/patches/server/0104-Make-entity-breeding-times-configurable.patch b/patches/server/0104-Make-entity-breeding-times-configurable.patch index e61ad2c3b..1626fbff8 100644 --- a/patches/server/0104-Make-entity-breeding-times-configurable.patch +++ b/patches/server/0104-Make-entity-breeding-times-configurable.patch @@ -316,7 +316,7 @@ index eaf2e6b9865a36b7c648bd1205db922a62cd7ee8..1af75e173958c192b8f53b7e17e75d98 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java -index 40323720d9ded9e3bc5eb2f16b43bb801f6f833c..14386280e7ab006787054ca17503ec8ef0ab9621 100644 +index 37882a393d7c17a9437145ab5fe1f74370681146..b07c09d0e9c4eae564913eb599e2f72af79a1bf0 100644 --- a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java +++ b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java @@ -83,6 +83,13 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Rider @@ -349,12 +349,12 @@ index 00bac64a6417b9e34c2b441a13e80052ad66a2c1..61c604a05eedb1928bdac8c8544b0cad @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index 44c1da8784cfeac754f5b43c1ac3bff12c4a262d..9fc6241c08aabfb4e21ee1eb4fb15226c718e0a4 100644 +index a9805129f0aaba5f0c2751d463019844eb3b347d..b627fee1cb19f476f45921f1fae7624b27ff7280 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -@@ -109,6 +109,11 @@ public class Goat extends Animal { - public void initAttributes() { - this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.goatMaxHealth); +@@ -104,6 +104,11 @@ public class Goat extends Animal { + public boolean isControllable() { + return level.purpurConfig.goatControllable; } + + @Override @@ -365,12 +365,12 @@ index 44c1da8784cfeac754f5b43c1ac3bff12c4a262d..9fc6241c08aabfb4e21ee1eb4fb15226 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java -index 1bf1bff1332cca89ba2df11f397473701b61fc7e..56746fca617a0ede20b6d71e8f2a39400f529b25 100644 +index 8f7cd5c3c786ff94fc9b890ec488a461b7edced0..efe381ff8d43295bcaf0d4fb7ff75f2bf46391eb 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java -@@ -35,6 +35,11 @@ public class Donkey extends AbstractChestedHorse { - public double generateRandomSpeed(net.minecraft.util.RandomSource random) { - return generateRandomSpeed(this.level.purpurConfig.donkeyMovementSpeedMin, this.level.purpurConfig.donkeyMovementSpeedMax); +@@ -20,6 +20,11 @@ public class Donkey extends AbstractChestedHorse { + public boolean dismountsUnderwater() { + return !level.purpurConfig.donkeyRidableInWater || super.dismountsUnderwater(); } + + @Override @@ -381,12 +381,12 @@ index 1bf1bff1332cca89ba2df11f397473701b61fc7e..56746fca617a0ede20b6d71e8f2a3940 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java b/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java -index ac8ba7652e0ca9f940152de09dc6cac564b99a2e..7984e920034af1cfa68179f82b9a51c5345cceb5 100644 +index c653a3d459fd8c1c4728cd5a0e63c6b3707792d9..2dbcebf7c370d4f5a51b5a23e67306c6c1ab83ba 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java -@@ -60,6 +60,11 @@ public class Horse extends AbstractHorse implements VariantHolder { - public double generateRandomSpeed(RandomSource random) { - return generateRandomSpeed(this.level.purpurConfig.horseMovementSpeedMin, this.level.purpurConfig.horseMovementSpeedMax); +@@ -45,6 +45,11 @@ public class Horse extends AbstractHorse implements VariantHolder { + public boolean dismountsUnderwater() { + return !level.purpurConfig.horseRidableInWater || super.dismountsUnderwater(); } + + @Override @@ -397,12 +397,12 @@ index ac8ba7652e0ca9f940152de09dc6cac564b99a2e..7984e920034af1cfa68179f82b9a51c5 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -index a7238c95aa7bdf98c9fcd82d993bdf63e2feb1fa..d83ab783d5faeea8af25826ec24a337abb852e98 100644 +index 8adca393017dcc2e44a7379b971cd2a4704bc570..4165c7d54d00e356767dc56be86f5bff6aa8e8bb 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -@@ -136,6 +136,11 @@ public class Llama extends AbstractChestedHorse implements VariantHolder { @@ -26,7 +26,7 @@ index 2930100746d9119f410f2cc87847993a850b9a1c..d34e2830e13a3cc4ff84ba207858ebe9 @Override public Cat getBreedOffspring(ServerLevel world, AgeableMob entity) { diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -index 0eeb717079c5160d894b1e321e5191e3547b6eb7..a530ee1dfe4aa3fb77a05927b78184aeabd1df85 100644 +index a38cea2dead98ffb1a555df7a494d2e12ab504f5..06f2225743e27c7f1f0eb15ee6beedc57c8a3b4f 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java @@ -201,6 +201,12 @@ public class Wolf extends TamableAnimal implements NeutralMob { @@ -43,7 +43,7 @@ index 0eeb717079c5160d894b1e321e5191e3547b6eb7..a530ee1dfe4aa3fb77a05927b78184ae @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2e94ace75a2cb836e26fae2d5075ad52830fb683..d00cd3297b6524f702a0f251b34ba9bd09d951f6 100644 +index 0d320ce7d833bbddbecb39b96dddf459f9babaf5..056d74886fc50508de302c75f32e5d541f142a3f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -621,6 +621,7 @@ public class PurpurWorldConfig { @@ -66,7 +66,7 @@ index 2e94ace75a2cb836e26fae2d5075ad52830fb683..d00cd3297b6524f702a0f251b34ba9bd } public boolean caveSpiderRidable = false; -@@ -1924,6 +1930,7 @@ public class PurpurWorldConfig { +@@ -1929,6 +1935,7 @@ public class PurpurWorldConfig { public boolean wolfRidableInWater = false; public boolean wolfControllable = true; public double wolfMaxHealth = 8.0D; @@ -74,7 +74,7 @@ index 2e94ace75a2cb836e26fae2d5075ad52830fb683..d00cd3297b6524f702a0f251b34ba9bd public boolean wolfMilkCuresRabies = true; public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; -@@ -1937,6 +1944,11 @@ public class PurpurWorldConfig { +@@ -1942,6 +1949,11 @@ public class PurpurWorldConfig { set("mobs.wolf.attributes.max_health", oldValue); } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); diff --git a/patches/server/0120-Striders-give-saddle-back.patch b/patches/server/0120-Striders-give-saddle-back.patch index f2700a7f3..3ab32d461 100644 --- a/patches/server/0120-Striders-give-saddle-back.patch +++ b/patches/server/0120-Striders-give-saddle-back.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Striders give saddle back diff --git a/src/main/java/net/minecraft/world/entity/monster/Strider.java b/src/main/java/net/minecraft/world/entity/monster/Strider.java -index d586c311d19b981427f5977b4ec84e4d1abe5e97..4ab0a053d6b3c8d57f6420114c649d2ec3a565fc 100644 +index fbc2e3f0b73608a999619469cd701692cb1cb788..7d10e81669177d0df5c6eba79a2aac46122daea6 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Strider.java +++ b/src/main/java/net/minecraft/world/entity/monster/Strider.java @@ -486,6 +486,19 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { @@ -29,10 +29,10 @@ index d586c311d19b981427f5977b4ec84e4d1abe5e97..4ab0a053d6b3c8d57f6420114c649d2e if (!this.level.isClientSide) { player.startRiding(this); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9cdbc268c4ca2296d0126a974e1bd04bb67eebdd..89b0e3753ae2c4728e337ee080d17abc2403040c 100644 +index 84577116234c339e378b8bada2476b2f596ff228..8871243460a9ecb89fa02aba138b5d00d49382b9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1698,6 +1698,7 @@ public class PurpurWorldConfig { +@@ -1703,6 +1703,7 @@ public class PurpurWorldConfig { public boolean striderControllable = true; public double striderMaxHealth = 20.0D; public int striderBreedingTicks = 6000; @@ -40,7 +40,7 @@ index 9cdbc268c4ca2296d0126a974e1bd04bb67eebdd..89b0e3753ae2c4728e337ee080d17abc private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1709,6 +1710,7 @@ public class PurpurWorldConfig { +@@ -1714,6 +1715,7 @@ public class PurpurWorldConfig { } striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); diff --git a/patches/server/0124-Add-mobGriefing-bypass-to-everything-affected.patch b/patches/server/0124-Add-mobGriefing-bypass-to-everything-affected.patch index 96d9ab3a7..03c4f1398 100644 --- a/patches/server/0124-Add-mobGriefing-bypass-to-everything-affected.patch +++ b/patches/server/0124-Add-mobGriefing-bypass-to-everything-affected.patch @@ -374,7 +374,7 @@ index 1942649e868fc985a488034c411a6721595ecc67..7495e0e8beedad59fff24ebf189b58b3 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1314ab21523e5fa5acdbf24a7c811988f9dbf98b..730c5227e3bab35999375acd7cd0a33ad17fc3ce 100644 +index 8f7f57238578409db62286274ed2e33e58d09458..adf0e0f34f7fd4d38e6a801fa3f20dbfe4769c99 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -117,8 +117,11 @@ public class PurpurWorldConfig { @@ -628,8 +628,8 @@ index 1314ab21523e5fa5acdbf24a7c811988f9dbf98b..730c5227e3bab35999375acd7cd0a33a + snowGolemBypassMobGriefing = getBoolean("mobs.snow_golem.bypass-mob-griefing", snowGolemBypassMobGriefing); } - public boolean squidRidable = false; -@@ -1825,6 +1864,7 @@ public class PurpurWorldConfig { + public int snifferBreedingTicks = 6000; +@@ -1830,6 +1869,7 @@ public class PurpurWorldConfig { public int villagerBreedingTicks = 6000; public boolean villagerClericsFarmWarts = false; public boolean villagerClericFarmersThrowWarts = true; @@ -637,7 +637,7 @@ index 1314ab21523e5fa5acdbf24a7c811988f9dbf98b..730c5227e3bab35999375acd7cd0a33a private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1841,6 +1881,7 @@ public class PurpurWorldConfig { +@@ -1846,6 +1886,7 @@ public class PurpurWorldConfig { villagerBreedingTicks = getInt("mobs.villager.breeding-delay-ticks", villagerBreedingTicks); villagerClericsFarmWarts = getBoolean("mobs.villager.clerics-farm-warts", villagerClericsFarmWarts); villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts); @@ -645,7 +645,7 @@ index 1314ab21523e5fa5acdbf24a7c811988f9dbf98b..730c5227e3bab35999375acd7cd0a33a } public boolean vindicatorRidable = false; -@@ -1913,6 +1954,7 @@ public class PurpurWorldConfig { +@@ -1918,6 +1959,7 @@ public class PurpurWorldConfig { public double witherMaxHealth = 300.0D; public float witherHealthRegenAmount = 1.0f; public int witherHealthRegenDelay = 20; @@ -653,7 +653,7 @@ index 1314ab21523e5fa5acdbf24a7c811988f9dbf98b..730c5227e3bab35999375acd7cd0a33a private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -1930,6 +1972,7 @@ public class PurpurWorldConfig { +@@ -1935,6 +1977,7 @@ public class PurpurWorldConfig { witherMaxHealth = getDouble("mobs.wither.attributes.max_health", witherMaxHealth); witherHealthRegenAmount = (float) getDouble("mobs.wither.health-regen-amount", witherHealthRegenAmount); witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay); @@ -661,7 +661,7 @@ index 1314ab21523e5fa5acdbf24a7c811988f9dbf98b..730c5227e3bab35999375acd7cd0a33a } public boolean witherSkeletonRidable = false; -@@ -2001,6 +2044,7 @@ public class PurpurWorldConfig { +@@ -2006,6 +2049,7 @@ public class PurpurWorldConfig { public double zombieJockeyChance = 0.05D; public boolean zombieJockeyTryExistingChickens = true; public boolean zombieAggressiveTowardsVillagerWhenLagging = true; @@ -669,7 +669,7 @@ index 1314ab21523e5fa5acdbf24a7c811988f9dbf98b..730c5227e3bab35999375acd7cd0a33a private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2016,6 +2060,7 @@ public class PurpurWorldConfig { +@@ -2021,6 +2065,7 @@ public class PurpurWorldConfig { zombieJockeyChance = getDouble("mobs.zombie.jockey.chance", zombieJockeyChance); zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens); zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging); diff --git a/patches/server/0130-Toggle-for-water-sensitive-mob-damage.patch b/patches/server/0130-Toggle-for-water-sensitive-mob-damage.patch index a5a88b6f6..1da6e516d 100644 --- a/patches/server/0130-Toggle-for-water-sensitive-mob-damage.patch +++ b/patches/server/0130-Toggle-for-water-sensitive-mob-damage.patch @@ -1,6 +1,6 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: YouHaveTrouble -Date: Fri, 5 Feb 2021 01:11:22 +0100 +From: granny +Date: Thu, 16 Mar 2023 02:43:15 -0700 Subject: [PATCH] Toggle for water sensitive mob damage @@ -427,10 +427,10 @@ index 1af75e173958c192b8f53b7e17e75d980cbbbcbc..5e705c84e5deeb3b3bdede80bf2acd9a @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index 9fc6241c08aabfb4e21ee1eb4fb15226c718e0a4..85d08932d2941f2e75d2449d1a7a6223d529e295 100644 +index b627fee1cb19f476f45921f1fae7624b27ff7280..e47d4b920737cca51fa4003e79030258685d7e1a 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -@@ -114,6 +114,11 @@ public class Goat extends Animal { +@@ -109,6 +109,11 @@ public class Goat extends Animal { public int getPurpurBreedTime() { return this.level.purpurConfig.goatBreedingTicks; } @@ -443,10 +443,10 @@ index 9fc6241c08aabfb4e21ee1eb4fb15226c718e0a4..85d08932d2941f2e75d2449d1a7a6223 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java -index 56746fca617a0ede20b6d71e8f2a39400f529b25..c71127d7adb24a1bd14641b79839666412d08662 100644 +index efe381ff8d43295bcaf0d4fb7ff75f2bf46391eb..1b2838de60399e83fe6de91b368bfc5d9aa7a805 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java -@@ -40,6 +40,11 @@ public class Donkey extends AbstractChestedHorse { +@@ -25,6 +25,11 @@ public class Donkey extends AbstractChestedHorse { public int getPurpurBreedTime() { return this.level.purpurConfig.donkeyBreedingTicks; } @@ -459,10 +459,10 @@ index 56746fca617a0ede20b6d71e8f2a39400f529b25..c71127d7adb24a1bd14641b798396664 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java b/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java -index 7984e920034af1cfa68179f82b9a51c5345cceb5..22f8d501e2dfb765f0cf3f199efed7c5b1067581 100644 +index 2dbcebf7c370d4f5a51b5a23e67306c6c1ab83ba..02c090a15271a2d597278d01c850d842b4e7a9fd 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java -@@ -65,6 +65,11 @@ public class Horse extends AbstractHorse implements VariantHolder { +@@ -50,6 +50,11 @@ public class Horse extends AbstractHorse implements VariantHolder { public int getPurpurBreedTime() { return this.level.purpurConfig.horseBreedingTicks; } @@ -475,10 +475,10 @@ index 7984e920034af1cfa68179f82b9a51c5345cceb5..22f8d501e2dfb765f0cf3f199efed7c5 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -index d83ab783d5faeea8af25826ec24a337abb852e98..ce31da2f68c5468703ee24e546b829e9006e1eab 100644 +index 4165c7d54d00e356767dc56be86f5bff6aa8e8bb..185749df0c7c08f625145a29810ffed6042550bb 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -@@ -141,6 +141,11 @@ public class Llama extends AbstractChestedHorse implements VariantHolder list = this.llama.level.getEntities(this.llama, this.llama.getBoundingBox().inflate(9.0D, 4.0D, 9.0D), (entity) -> { EntityType entityType = entity.getType(); diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -index 5db7ddd3f4bd79dbcb241aad2abf96ade57ae4c4..c8d3f2ffb0f4d5586921421cda8acf27f7afe4b8 100644 +index 185749df0c7c08f625145a29810ffed6042550bb..3f3e6633a3de2ceb5a082777a24ff0451bd27976 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -@@ -540,7 +540,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder { +@@ -55,6 +55,11 @@ public class Horse extends AbstractHorse implements VariantHolder { public boolean isSensitiveToWater() { return this.level.purpurConfig.horseTakeDamageFromWater; } @@ -469,10 +469,10 @@ index 22f8d501e2dfb765f0cf3f199efed7c5b1067581..b737eb9d32b3a460d0832155b8c64faf @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -index 670a78292aa069b4e37eb1b46089e9f907f0a440..0b06ef5537cf781b9954fcdfc9423f1987cb5674 100644 +index 3f3e6633a3de2ceb5a082777a24ff0451bd27976..80cdace3ac83dd7186d417e83408f684a13512ae 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -@@ -146,6 +146,11 @@ public class Llama extends AbstractChestedHorse implements VariantHolder list = world.getEntitiesOfClass(Villager.class, axisalignedbb); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6167910078b7beb8a8a56e2a5794e8c882fdc6a1..2832e0694661faba7d6238f9cdfdcbbef6240833 100644 +index 2d6b1f21daa9813e50c5e8ae1773169ba4f63ef2..a333c3daae7e6416ec1ff897ca5fc6629c31a9c8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2692,6 +2692,8 @@ public class PurpurWorldConfig { +@@ -2697,6 +2697,8 @@ public class PurpurWorldConfig { public boolean villagerLobotomizeEnabled = false; public int villagerLobotomizeCheckInterval = 100; public boolean villagerDisplayTradeItem = true; @@ -30,7 +30,7 @@ index 6167910078b7beb8a8a56e2a5794e8c882fdc6a1..2832e0694661faba7d6238f9cdfdcbbe private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2725,6 +2727,8 @@ public class PurpurWorldConfig { +@@ -2730,6 +2732,8 @@ public class PurpurWorldConfig { villagerLobotomizeEnabled = getBoolean("mobs.villager.lobotomize.enabled", villagerLobotomizeEnabled); villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval); villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem); diff --git a/patches/server/0259-Stonecutter-damage.patch b/patches/server/0259-Stonecutter-damage.patch index 7e6c9c00e..50ab1ac42 100644 --- a/patches/server/0259-Stonecutter-damage.patch +++ b/patches/server/0259-Stonecutter-damage.patch @@ -56,7 +56,7 @@ index 7bbfa2f8ac29dd32b100d356b285b5e5bd6615fe..ebe9dd5533710cc9f74801c13c71f8a1 damageTypeRegisterable.register(FALLING_ANVIL, new DamageType("anvil", 0.1F)); damageTypeRegisterable.register(FALLING_STALACTITE, new DamageType("fallingStalactite", 0.1F)); diff --git a/src/main/java/net/minecraft/world/level/block/StonecutterBlock.java b/src/main/java/net/minecraft/world/level/block/StonecutterBlock.java -index 0a95842c53a9d0286c57bcb42db97e468e30fb7d..b6742a1efcceb0fb950d995101b6be16b0d05978 100644 +index 0a95842c53a9d0286c57bcb42db97e468e30fb7d..0882e67c5cf876e0fc58a4ca4accb4be40418983 100644 --- a/src/main/java/net/minecraft/world/level/block/StonecutterBlock.java +++ b/src/main/java/net/minecraft/world/level/block/StonecutterBlock.java @@ -92,4 +92,16 @@ public class StonecutterBlock extends Block { @@ -69,7 +69,7 @@ index 0a95842c53a9d0286c57bcb42db97e468e30fb7d..b6742a1efcceb0fb950d995101b6be16 + public void stepOn(Level level, BlockPos pos, BlockState state, net.minecraft.world.entity.Entity entity) { + if (level.purpurConfig.stonecutterDamage > 0.0F && entity instanceof net.minecraft.world.entity.LivingEntity) { + org.bukkit.craftbukkit.event.CraftEventFactory.blockDamage = level.getWorld().getBlockAt(pos.getX(), pos.getY(), pos.getZ()); -+ entity.hurt(net.minecraft.world.damagesource.DamageSource.STONECUTTER, level.purpurConfig.stonecutterDamage); ++ entity.hurt(entity.damageSources().stonecutter(), level.purpurConfig.stonecutterDamage); + org.bukkit.craftbukkit.event.CraftEventFactory.blockDamage = null; + } + super.stepOn(level, pos, state, entity); @@ -99,7 +99,7 @@ index 17a7fab20b4174273354fdc2fc700b7f2d669a98..a7578e112e80ed2585a7eb4fff9542f6 return BlockPathTypes.STICKY_HONEY; } else if (blockState.is(Blocks.COCOA)) { diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 15dabf8da91c003ee69934b7c59ef123a9ebc535..162faa8b3de4262d03416fcbd39e3349b754d324 100644 +index debba52be7ba896f5a96a2ffa4e502101627a576..a20866374badffdda0ea10f83fb74347240fee19 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -1057,6 +1057,10 @@ public class CraftEventFactory { @@ -107,7 +107,7 @@ index 15dabf8da91c003ee69934b7c59ef123a9ebc535..162faa8b3de4262d03416fcbd39e3349 } else if (sourceType == DamageTypes.IN_FIRE) { cause = DamageCause.FIRE; + // Purpur start -+ } else if (source == DamageSource.STONECUTTER) { ++ } else if (sourceType == DamageTypes.STONE_CUTTER) { + cause = DamageCause.CONTACT; + // Purpur end } else { @@ -129,7 +129,7 @@ index 636c032127c2026509764745f805ae0693e4a983..3734f6279005872eac6697e6e22c3a2e public static boolean advancementOnlyBroadcastToAffectedPlayer = false; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2832e0694661faba7d6238f9cdfdcbbef6240833..89323ca8142bea7125c18720bbf26dddbf9f94e5 100644 +index a333c3daae7e6416ec1ff897ca5fc6629c31a9c8..608db11e2569ea93b5192cc443c580ebf837f70d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -992,6 +992,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0275-Remove-Mojang-Profiler.patch b/patches/server/0275-Remove-Mojang-Profiler.patch index 7772bb4c5..047921d69 100644 --- a/patches/server/0275-Remove-Mojang-Profiler.patch +++ b/patches/server/0275-Remove-Mojang-Profiler.patch @@ -1470,7 +1470,7 @@ index d61d9a7e7fa4d360dc740fdcb31efd028452fe61..e46105d1d15b4f8d24f726cc75be3020 Optional optional = this.getBrain().getMemory(MemoryModuleType.PLAY_DEAD_TICKS); diff --git a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java -index 14386280e7ab006787054ca17503ec8ef0ab9621..ed07b29820ba7032bab439a7f5db0e2d0ea3e0b8 100644 +index b07c09d0e9c4eae564913eb599e2f72af79a1bf0..a8cda7d3809485f4491e378db5ae6699e9ed5c13 100644 --- a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java +++ b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java @@ -156,13 +156,13 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Rider @@ -1534,10 +1534,10 @@ index f12bd0227af77bec164f2938957c0c8100be9d03..16cc27ad7c152c5ea0854ba095a72ea3 } diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index 9d813827c27823c2e01341330cda1a64c4cdd315..ac91fe2c9b0c293789c4e0273823ddf5601b666d 100644 +index f61843b76ad0dd50ed0ccaaf5f83a0c63e460343..07fa6220417a3df8f2471d74e1c3cb22d245fd06 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -@@ -230,10 +230,10 @@ public class Goat extends Animal { +@@ -225,10 +225,10 @@ public class Goat extends Animal { this.level.getProfiler().push("goatBrain"); if ((getRider() == null || !this.isControllable())/* && this.behaviorTick++ % this.activatedPriority == 0*/) // Pufferfish // Purpur - only use brain if no rider TODO: uncomment when including Pufferfish this.getBrain().tick((ServerLevel) this.level, this); @@ -1636,7 +1636,7 @@ index a268f6a39b972f91ca04d6b0004efda4cf086e10..d72221ab3e6d92a1bb5b8303ce3152f8 if ((this.tickCount + this.getId()) % 120 == 0) { Warden.applyDarknessAround(worldserver, this.position(), this, 20); diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 87e1782baf0f5d083c23dd848952e8eac51e40f0..9c5d1426c19309048bd33e7a44818b7edbe6a431 100644 +index d5fce1215d99de3393d06fdc65939920386b9318..9d19f6701acd9b5e430263347ee8a9925b9c49c2 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -332,7 +332,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler diff --git a/patches/server/0296-Fire-Immunity-API.patch b/patches/server/0296-Fire-Immunity-API.patch index a6e5c87cc..a5fdedacc 100644 --- a/patches/server/0296-Fire-Immunity-API.patch +++ b/patches/server/0296-Fire-Immunity-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fire Immunity API diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index f68b42f80bb8d76d08589f2d3047da1e07984092..9f73c9c9109686ff9d2a87465b887747a9b18d6b 100644 +index ffe329e624b4d7db6c2b6f49f31093ab02116214..099b7da30aaf2dca7fe556d26c1395f662fbf80a 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -399,6 +399,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -50,12 +50,12 @@ index f68b42f80bb8d76d08589f2d3047da1e07984092..9f73c9c9109686ff9d2a87465b887747 } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Loading entity NBT"); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 93fe0bbdd4ea1507035533eb40b0eae6a0a890cb..ba92b2756d7dbf7b2074c5871f8dc25b2e32c18b 100644 +index 0db19dfbec593b9fd6f22970960fbe967bd7c280..9f1017e2e51bd6e0c9a6a59663e1acbf17675f3b 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -1473,5 +1473,15 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { public boolean isRidableInWater() { - return getHandle().rideableUnderWater(); + return !getHandle().dismountsUnderwater(); } + + @Override diff --git a/patches/server/0298-Added-got-ram-event.patch b/patches/server/0298-Added-got-ram-event.patch index 224b4486e..0907935fa 100644 --- a/patches/server/0298-Added-got-ram-event.patch +++ b/patches/server/0298-Added-got-ram-event.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Added got ram event diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index cc319c0d2d34d72709c7bd60282c474d2698dc25..98647e14240b0d72d780331a2823cba78610d01a 100644 +index 07fa6220417a3df8f2471d74e1c3cb22d245fd06..e59af521c1a7145996d91b282c0063fdb8e64347 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -@@ -425,6 +425,7 @@ public class Goat extends Animal { +@@ -420,6 +420,7 @@ public class Goat extends Animal { // Paper start - Goat ram API public void ram(net.minecraft.world.entity.LivingEntity entity) { diff --git a/patches/server/0300-End-Crystal-Cramming.patch b/patches/server/0300-End-Crystal-Cramming.patch index bd0f9845a..4d48508a9 100644 --- a/patches/server/0300-End-Crystal-Cramming.patch +++ b/patches/server/0300-End-Crystal-Cramming.patch @@ -5,19 +5,19 @@ Subject: [PATCH] End Crystal Cramming diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java -index a1a604fd9ba128ffb4bf4ab017188ef85627d223..c107761467c7574bdcfc956e0ffc7ee9698d8867 100644 +index a4fc0e9cb52bb5937effe5cd09f8bbefcf8dd531..e3fe5f18c77e36479eaeb7edfd2a3eb919c342d6 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java @@ -83,6 +83,7 @@ public class EndCrystal extends Entity { } } // Paper end -+ if (this.level.purpurConfig.endCrystalCramming > 0 && this.level.getEntitiesOfClass(EndCrystal.class, getBoundingBox()).size() > this.level.purpurConfig.endCrystalCramming) this.hurt(DamageSource.CRAMMING, 6.0F); // Purpur ++ if (this.level.purpurConfig.endCrystalCramming > 0 && this.level.getEntitiesOfClass(EndCrystal.class, getBoundingBox()).size() > this.level.purpurConfig.endCrystalCramming) this.hurt(this.damageSources().cramming(), 6.0F); // Purpur } // Purpur start diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index db8e647e043c7d89c8cf7b5c13dd290e7d8b3050..9efeff43abf589fbb2ffe865cdc010d1ddf7db63 100644 +index 69b04d74e3a44b01fc24c67ce9ce627ce2b5a992..ea8e4ad5ba1d5894747e11674bbc63ba57c9a061 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -848,6 +848,7 @@ public class PurpurWorldConfig {