diff --git a/patches/unapplied/server/0101-Ability-to-re-add-farmland-mechanics-from-Alpha.patch b/patches/server/0098-Ability-to-re-add-farmland-mechanics-from-Alpha.patch similarity index 92% rename from patches/unapplied/server/0101-Ability-to-re-add-farmland-mechanics-from-Alpha.patch rename to patches/server/0098-Ability-to-re-add-farmland-mechanics-from-Alpha.patch index 0386e338a..1d51e5a29 100644 --- a/patches/unapplied/server/0101-Ability-to-re-add-farmland-mechanics-from-Alpha.patch +++ b/patches/server/0098-Ability-to-re-add-farmland-mechanics-from-Alpha.patch @@ -24,10 +24,10 @@ index 1776906e886edd511bfbe96b8a345438a3cd66f8..7efae60a9a9269703a1fa7cd280b5b96 return; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b996cafed3083c3d9604005a054f0b4511bbf383..8a43f22c9bcd20d2c1efbc18bce827551af77309 100644 +index 41d694ec386530f97044ff6aa98f4e436cadddd7..957fb2554554be7912f434b999a9ddd31681b92a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -414,8 +414,10 @@ public class PurpurWorldConfig { +@@ -410,8 +410,10 @@ public class PurpurWorldConfig { } public boolean farmlandGetsMoistFromBelow = false; diff --git a/patches/unapplied/server/0102-Add-adjustable-breeding-cooldown-to-config.patch b/patches/server/0099-Add-adjustable-breeding-cooldown-to-config.patch similarity index 93% rename from patches/unapplied/server/0102-Add-adjustable-breeding-cooldown-to-config.patch rename to patches/server/0099-Add-adjustable-breeding-cooldown-to-config.patch index 3e36ffd94..e330d7f77 100644 --- a/patches/unapplied/server/0102-Add-adjustable-breeding-cooldown-to-config.patch +++ b/patches/server/0099-Add-adjustable-breeding-cooldown-to-config.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add adjustable breeding cooldown to config diff --git a/src/main/java/net/minecraft/world/entity/animal/Animal.java b/src/main/java/net/minecraft/world/entity/animal/Animal.java -index c2f61ed153260692c96af4f20bc5b7d55cbbc380..43f01ce3064fdc0bb46beab6ea001942f1506200 100644 +index be105a4460e9bf2ef4b72a307fa31291c37d5e0e..5fe0b2301dbd1bedaa26254f7f88931c2022d709 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Animal.java +++ b/src/main/java/net/minecraft/world/entity/animal/Animal.java -@@ -154,7 +154,7 @@ public abstract class Animal extends AgeableMob { +@@ -149,7 +149,7 @@ public abstract class Animal extends AgeableMob { if (this.isFood(itemstack)) { int i = this.getAge(); @@ -17,7 +17,7 @@ index c2f61ed153260692c96af4f20bc5b7d55cbbc380..43f01ce3064fdc0bb46beab6ea001942 this.usePlayerItem(player, hand, itemstack); this.setInLove(player); return InteractionResult.SUCCESS; -@@ -236,12 +236,20 @@ public abstract class Animal extends AgeableMob { +@@ -231,12 +231,20 @@ public abstract class Animal extends AgeableMob { AgeableMob entityageable = this.getBreedOffspring(world, other); if (entityageable != null) { @@ -42,10 +42,10 @@ index c2f61ed153260692c96af4f20bc5b7d55cbbc380..43f01ce3064fdc0bb46beab6ea001942 EntityBreedEvent entityBreedEvent = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityBreedEvent(entityageable, this, other, breeder, this.breedItem, experience); if (entityBreedEvent.isCancelled()) { diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index a4c45ee8a5c6e55a6f9abde401cc06f13bd0b018..84ac5db63a51d1490fcf625d10ed0952d671017e 100644 +index 1f23c66694d601d0cb52fb637407ada5f9975420..282ec5085a8076790d2a24e7979b36c06a9bcba0 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -194,6 +194,49 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -193,6 +193,49 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } // Paper end - fix and optimise world upgrading @@ -95,7 +95,7 @@ index a4c45ee8a5c6e55a6f9abde401cc06f13bd0b018..84ac5db63a51d1490fcf625d10ed0952 public CraftWorld getWorld() { return this.world; } -@@ -289,6 +332,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -214,6 +257,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper this.purpurConfig = new org.purpurmc.purpur.PurpurWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName(), env); // Purpur @@ -104,7 +104,7 @@ index a4c45ee8a5c6e55a6f9abde401cc06f13bd0b018..84ac5db63a51d1490fcf625d10ed0952 this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8a43f22c9bcd20d2c1efbc18bce827551af77309..7bc980fee2727359a9a2ecc66f31f3569cf8491f 100644 +index 957fb2554554be7912f434b999a9ddd31681b92a..ff50c24f3a6e2dd0eb5d4e23cc9a38647e2c1194 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -115,6 +115,7 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/server/0103-Make-entity-breeding-times-configurable.patch b/patches/server/0100-Make-entity-breeding-times-configurable.patch similarity index 87% rename from patches/unapplied/server/0103-Make-entity-breeding-times-configurable.patch rename to patches/server/0100-Make-entity-breeding-times-configurable.patch index 59af9d228..ec7ac7d0d 100644 --- a/patches/unapplied/server/0103-Make-entity-breeding-times-configurable.patch +++ b/patches/server/0100-Make-entity-breeding-times-configurable.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Make entity breeding times configurable diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerMakeLove.java b/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerMakeLove.java -index 645d204fe2c727637a6a547aad7d4db1279628ae..8be2f612c9e8a64b0aad6bb54450cdfb12b3c19e 100644 +index 0cc411dd39d981187c9e9a3c5eb8043b19a09b98..f7032f4ea55f5aca293c2640686238b7af0f9c80 100644 --- a/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerMakeLove.java +++ b/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerMakeLove.java @@ -127,8 +127,10 @@ public class VillagerMakeLove extends Behavior { @@ -22,7 +22,7 @@ index 645d204fe2c727637a6a547aad7d4db1279628ae..8be2f612c9e8a64b0aad6bb54450cdfb // CraftBukkit end world.broadcastEntityEvent(entityvillager2, (byte) 12); diff --git a/src/main/java/net/minecraft/world/entity/animal/Animal.java b/src/main/java/net/minecraft/world/entity/animal/Animal.java -index 43f01ce3064fdc0bb46beab6ea001942f1506200..8773b1072016a3bbf025959e9ab827704ec17fc6 100644 +index 5fe0b2301dbd1bedaa26254f7f88931c2022d709..2e268aa614522b40fbffabce4017b228db5bcba8 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Animal.java +++ b/src/main/java/net/minecraft/world/entity/animal/Animal.java @@ -42,6 +42,7 @@ public abstract class Animal extends AgeableMob { @@ -33,7 +33,7 @@ index 43f01ce3064fdc0bb46beab6ea001942f1506200..8773b1072016a3bbf025959e9ab82770 protected Animal(EntityType type, Level world) { super(type, world); -@@ -277,8 +278,10 @@ public abstract class Animal extends AgeableMob { +@@ -272,8 +273,10 @@ public abstract class Animal extends AgeableMob { entityplayer.awardStat(Stats.ANIMALS_BRED); CriteriaTriggers.BRED_ANIMALS.trigger(entityplayer, this, entityanimal, entityageable); } // Paper @@ -63,10 +63,10 @@ index e7f95639a442cf602fef0ed7aec0f5f96aa6fd92..fd917f72b4b4d4af1ae36feab38deac2 public int getRemainingPersistentAngerTime() { return (Integer) this.entityData.get(Bee.DATA_REMAINING_ANGER_TIME); diff --git a/src/main/java/net/minecraft/world/entity/animal/Cat.java b/src/main/java/net/minecraft/world/entity/animal/Cat.java -index 49a6ac765e71b311c91cbfd4cf9cde2daa729239..ffa2128b63e5e45c2a41e31a6b8b6e8df0bf9be4 100644 +index 87642c1c2c1f39a1c2029797bab73f60c19a1080..a5b1cc957b824f8cc36693128ce05f5d556cf7d7 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cat.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java -@@ -127,6 +127,11 @@ public class Cat extends TamableAnimal implements VariantHolder { +@@ -128,6 +128,11 @@ public class Cat extends TamableAnimal implements VariantHolder { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.catMaxHealth); } @@ -79,10 +79,10 @@ index 49a6ac765e71b311c91cbfd4cf9cde2daa729239..ffa2128b63e5e45c2a41e31a6b8b6e8d return this.getVariant().texture(); } 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 0f49705e3c7adf033cee9d0746319885c830224f..86b910cbb8d0e19dc9ae53078e730495bf4a3b87 100644 +index bc3094493d7d25eaf50da8fdd74eacae25692b09..b142e5c489e9fe65b7258f541ef121b2cd020886 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Chicken.java +++ b/src/main/java/net/minecraft/world/entity/animal/Chicken.java -@@ -79,6 +79,11 @@ public class Chicken extends Animal { +@@ -80,6 +80,11 @@ public class Chicken extends Animal { } } @@ -95,10 +95,10 @@ index 0f49705e3c7adf033cee9d0746319885c830224f..86b910cbb8d0e19dc9ae53078e730495 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); 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 28c7e240b7dd1957ccb6a45608b1d052a32dc18a..f9cce30eef4a5bffeb27c48a6c7ee361803560c5 100644 +index d42c8bcd85ffb1e00d2883485bf22981611b0bc3..c501704251e5b23f697efc307ebdc906cd2e5acd 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java -@@ -66,6 +66,11 @@ public class Cow extends Animal { +@@ -69,6 +69,11 @@ public class Cow extends Animal { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.cowMaxHealth); } @@ -111,10 +111,10 @@ index 28c7e240b7dd1957ccb6a45608b1d052a32dc18a..f9cce30eef4a5bffeb27c48a6c7ee361 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); 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 cedc4dac776dde310dbf1a22272ce54b14ca2c9e..2cf00af66b73e1891fadcabcf83307873cbed710 100644 +index f26fa004e1372f8711e76bc7fa4cdb383b989755..b13429e254bd056cf942f39d46976ff0ef2a97f3 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java -@@ -186,6 +186,11 @@ public class Fox extends Animal implements VariantHolder { +@@ -188,6 +188,11 @@ public class Fox extends Animal implements VariantHolder { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.foxMaxHealth); } @@ -126,7 +126,7 @@ index cedc4dac776dde310dbf1a22272ce54b14ca2c9e..2cf00af66b73e1891fadcabcf8330787 @Override protected void defineSynchedData() { super.defineSynchedData(); -@@ -981,8 +986,10 @@ public class Fox extends Animal implements VariantHolder { +@@ -991,8 +996,10 @@ public class Fox extends Animal implements VariantHolder { CriteriaTriggers.BRED_ANIMALS.trigger(entityplayer2, this.animal, this.partner, entityfox); } @@ -140,7 +140,7 @@ index cedc4dac776dde310dbf1a22272ce54b14ca2c9e..2cf00af66b73e1891fadcabcf8330787 this.partner.resetLove(); worldserver.addFreshEntityWithPassengers(entityfox, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BREEDING); // CraftBukkit - added SpawnReason diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index b27c0f21354a78025f9d1664c560fb8799bced91..7fd50f60aab2fa49a8227f313352a2ee251904c8 100644 +index c83e5d58ca5db1e63e099f36006043f7e78ea56f..cdf2bd4b2aa43b1d45fb0f0e8c4a14057ca39525 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java @@ -85,6 +85,11 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder { +@@ -143,6 +143,11 @@ public class Rabbit extends Animal implements VariantHolder { public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.rabbitMaxHealth); } @@ -252,10 +252,10 @@ index 6d5213d26dbd9d36c5cbe6056091d9e5c85e23c4..787391763cac2ae6ed9c178c44616b99 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/Sheep.java b/src/main/java/net/minecraft/world/entity/animal/Sheep.java -index 3d212b09258b9777079d4bc7ce950f529cdce69e..c3b79c109e895cb4460571c8816b210455126f1d 100644 +index c24299cb482beaef3e2e860475c66e068fa03eb1..284c9780e18f51b6ebd32b7eb7a9d3e47b4d0288 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Sheep.java +++ b/src/main/java/net/minecraft/world/entity/animal/Sheep.java -@@ -139,6 +139,11 @@ public class Sheep extends Animal implements Shearable { +@@ -141,6 +141,11 @@ public class Sheep extends Animal implements Shearable { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.sheepMaxHealth); } @@ -268,10 +268,10 @@ index 3d212b09258b9777079d4bc7ce950f529cdce69e..c3b79c109e895cb4460571c8816b2104 protected void registerGoals() { this.eatBlockGoal = new EatBlockGoal(this); diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -index 6ae82b6293f236fc926f411de2badc496b35399b..4a5cc7eaac2bc093a0f5a457b93b6f4560d739ca 100644 +index 4b76c207c7f1eee6bdceebeeba50779557a2662a..6ff7d09066e3f175c3b9404febac9ef9940dc8d5 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -@@ -105,6 +105,11 @@ public class Turtle extends Animal { +@@ -108,6 +108,11 @@ public class Turtle extends Animal { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.turtleMaxHealth); } @@ -284,10 +284,10 @@ index 6ae82b6293f236fc926f411de2badc496b35399b..4a5cc7eaac2bc093a0f5a457b93b6f45 this.entityData.set(Turtle.HOME_POS, pos.immutable()); // Paper - called with mutablepos... } 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 1a27e811169a58515c796344ffa1bb3c46d1014a..d8c73365915e67b38292c96a9601f983f121bdf9 100644 +index eecdb1f1d49951cb8a294d176afd12c68fb6c3b1..39a923e48750bd960f64aad248c10dd390afc239 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -@@ -130,6 +130,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -132,6 +132,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.wolfMaxHealth); } @@ -300,7 +300,7 @@ index 1a27e811169a58515c796344ffa1bb3c46d1014a..d8c73365915e67b38292c96a9601f983 protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index e1c0c122dde56b8dd797d1278340260150025cf9..acf44bf3d22d7b2ac7a02b3167cf577403942908 100644 +index ab04ea644615d2118d6fb1da95968cbb3139a6a2..9faac858cc33895e6e7458b0deb72f225b158246 100644 --- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java @@ -120,6 +120,11 @@ public class Axolotl extends Animal implements LerpingModel, VariantHolder getModelRotationValues() { return this.modelRotationValues; 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 5ec8815cc69f5abe03a29224650edfb153c9f5d0..8073a3a0df7d75a29419303c85d7dadd9f94be99 100644 +index 85a557b50498bb83eeec4125aa2ae14f3bfaaab8..f44261137f12354640170206ca7bfb6d991dc7a0 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 -@@ -89,6 +89,10 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Rider +@@ -91,6 +91,10 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Saddl public boolean dismountsUnderwater() { return level().purpurConfig.useDismountsUnderwaterTag ? super.dismountsUnderwater() : !level().purpurConfig.camelRidableInWater; } @@ -331,10 +331,10 @@ index 5ec8815cc69f5abe03a29224650edfb153c9f5d0..8073a3a0df7d75a29419303c85d7dadd @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java -index f189e0493286d58fbe16a30912b3a1dc4cd4c3e5..840b61241c44e92b3053157492f4389f46179e81 100644 +index fe54027f5ec0f88077bf95d3c4cd9a291c4dfa73..7ac51b7c53c89f15661a1fe0b00d07de40f64d81 100644 --- a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java +++ b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java -@@ -136,6 +136,10 @@ public class Frog extends Animal implements VariantHolder { +@@ -138,6 +138,10 @@ public class Frog extends Animal implements VariantHolder { } // Purpur end @@ -346,10 +346,10 @@ index f189e0493286d58fbe16a30912b3a1dc4cd4c3e5..840b61241c44e92b3053157492f4389f protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); 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 ec956339b02fc9da53563d67c0eeaa91a3c3a8ee..d7580f06f2f619cb283faa61bdd4e7cc127fc08b 100644 +index e82904142e32fe2da62e2cd00b8436b94de8c048..09489e5e736eb296d0361fd4ea4530e4869864b3 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 -@@ -107,6 +107,11 @@ public class Goat extends Animal { +@@ -109,6 +109,11 @@ public class Goat extends Animal { } // Purpur end @@ -394,10 +394,10 @@ index 92339f5a07dcb6bf7eb1bce6d584464ebd8430b5..0251ded48eb5bdf96f0e67f6456aa159 protected void randomizeAttributes(RandomSource random) { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue((double)generateMaxHealth(random::nextInt)); 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 72fe2dd69a9ae51e14ec91a83eac2dd74bd76cca..ad9d061979f5856cba9769b91357b3c75cd9a794 100644 +index 15a08abe94cb97de1450ff42cfb924a537b9eb5c..1c0d0f14659e0a64e6b3b3998f59f90cd5b59726 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 -@@ -138,6 +138,11 @@ public class Llama extends AbstractChestedHorse implements VariantHolder { +@@ -242,7 +242,13 @@ public class Boat extends Entity implements VariantHolder { } protected void destroy(DamageSource source) { @@ -136,7 +136,7 @@ index b2ad6d230de2c29f371178bccde1111c7532ee70..6667926519a0f1c151e53f59cce36e74 if (((HangingEntity) object).survives()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4df745bede2ecc5e9ee4129b980f9edfd8969d4f..f04861a5ca426b1c53b6d3ec4d3514bcaa9789a2 100644 +index 48de43f61f90e2610e04d04803b374cead07f655..6f08b0556b0c8e4d4547ee7982c083972a8e1043 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -97,8 +97,10 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/server/0105-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch b/patches/server/0102-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch similarity index 96% rename from patches/unapplied/server/0105-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch rename to patches/server/0102-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch index 908213606..05866acfb 100644 --- a/patches/unapplied/server/0105-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch +++ b/patches/server/0102-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch @@ -17,7 +17,7 @@ index 2941c16ef486345b57ab2dfcd26f0272285d3b5a..7cc6812bf6f2ba015f65fd1fc1eaac02 ((Mob) newEntityLiving).setPersistenceRequired(); // Paper end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f04861a5ca426b1c53b6d3ec4d3514bcaa9789a2..db678a5ee139920d51ba2fb179f1d01feab3c973 100644 +index 6f08b0556b0c8e4d4547ee7982c083972a8e1043..28584fe38e7eebf6c4a4e5e84ff064db18067d63 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -98,9 +98,11 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/server/0106-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch b/patches/server/0103-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch similarity index 85% rename from patches/unapplied/server/0106-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch rename to patches/server/0103-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch index 737d10cbf..2f65ff7a4 100644 --- a/patches/unapplied/server/0106-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch +++ b/patches/server/0103-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch @@ -8,10 +8,10 @@ This should help to reduce the amount of dirt, gravel, grass, and etc. that Endermen like to randomly place all over the world. 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 3861f367ac01028139cc6db35fb9a1e20cb39457..f49cbb9fcd13afc10aa76ac80128162a902ae345 100644 +index 8b4129b8f0f6a368ae6b168aac404316f12797bb..1985461125defcc2ce40c44408f223ab479e0525 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -494,7 +494,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -495,7 +495,7 @@ public class EnderMan extends Monster implements NeutralMob { @Override public boolean requiresCustomPersistence() { @@ -21,10 +21,10 @@ index 3861f367ac01028139cc6db35fb9a1e20cb39457..f49cbb9fcd13afc10aa76ac80128162a private static class EndermanFreezeWhenLookedAt extends Goal { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index db678a5ee139920d51ba2fb179f1d01feab3c973..6fdef95d12988207bb682ba165e135a94e505a58 100644 +index 28584fe38e7eebf6c4a4e5e84ff064db18067d63..da8485add57441b426a526cde2a83fd7d0cd8d22 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -837,6 +837,7 @@ public class PurpurWorldConfig { +@@ -833,6 +833,7 @@ public class PurpurWorldConfig { public boolean endermanControllable = true; public double endermanMaxHealth = 40.0D; public boolean endermanAllowGriefing = true; @@ -32,7 +32,7 @@ index db678a5ee139920d51ba2fb179f1d01feab3c973..6fdef95d12988207bb682ba165e135a9 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -848,6 +849,7 @@ public class PurpurWorldConfig { +@@ -844,6 +845,7 @@ public class PurpurWorldConfig { } endermanMaxHealth = getDouble("mobs.enderman.attributes.max_health", endermanMaxHealth); endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing); diff --git a/patches/unapplied/server/0107-Add-configurable-snowball-damage.patch b/patches/server/0104-Add-configurable-snowball-damage.patch similarity index 92% rename from patches/unapplied/server/0107-Add-configurable-snowball-damage.patch rename to patches/server/0104-Add-configurable-snowball-damage.patch index 333da4d36..fc62adeca 100644 --- a/patches/unapplied/server/0107-Add-configurable-snowball-damage.patch +++ b/patches/server/0104-Add-configurable-snowball-damage.patch @@ -18,10 +18,10 @@ index 718e120c9768cf716b32d3d652f53f1dda925168..b90cedad282e95a067aca176fafa9f72 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6fdef95d12988207bb682ba165e135a94e505a58..e9778b0e02fb94eeea2e8c6e2680b6564b11d399 100644 +index da8485add57441b426a526cde2a83fd7d0cd8d22..d6c4a63fad4bf17ea2aa2f0e364ccd99478e5c70 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -354,6 +354,11 @@ public class PurpurWorldConfig { +@@ -350,6 +350,11 @@ public class PurpurWorldConfig { //} } diff --git a/patches/unapplied/server/0108-Changeable-Mob-Left-Handed-Chance.patch b/patches/server/0105-Changeable-Mob-Left-Handed-Chance.patch similarity index 86% rename from patches/unapplied/server/0108-Changeable-Mob-Left-Handed-Chance.patch rename to patches/server/0105-Changeable-Mob-Left-Handed-Chance.patch index b1f6fac30..90692be93 100644 --- a/patches/unapplied/server/0108-Changeable-Mob-Left-Handed-Chance.patch +++ b/patches/server/0105-Changeable-Mob-Left-Handed-Chance.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Changeable Mob Left Handed Chance diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 049a6b2186ff31ac9a815ac501b75488e2e19266..50747e73ab0a37073e431db82d79b1ebc024d347 100644 +index 574ef1a38fa65b2eb92c9168de27279efd4dd81c..a6dc66e4e6d53146fff3f7c6af10d9c743343568 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -1302,7 +1302,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -1299,7 +1299,7 @@ public abstract class Mob extends LivingEntity implements Targeting { RandomSource randomsource = world.getRandom(); this.getAttribute(Attributes.FOLLOW_RANGE).addPermanentModifier(new AttributeModifier("Random spawn bonus", randomsource.triangle(0.0D, 0.11485000000000001D), AttributeModifier.Operation.MULTIPLY_BASE)); @@ -18,7 +18,7 @@ index 049a6b2186ff31ac9a815ac501b75488e2e19266..50747e73ab0a37073e431db82d79b1eb } else { this.setLeftHanded(false); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e9778b0e02fb94eeea2e8c6e2680b6564b11d399..4968d157692e71c54be0fd76069ece3ba0294e5f 100644 +index d6c4a63fad4bf17ea2aa2f0e364ccd99478e5c70..ed11a1ca61ef0401936cd612e463a2ad4111585f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -156,8 +156,10 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/server/0109-Add-boat-fall-damage-config.patch b/patches/server/0106-Add-boat-fall-damage-config.patch similarity index 88% rename from patches/unapplied/server/0109-Add-boat-fall-damage-config.patch rename to patches/server/0106-Add-boat-fall-damage-config.patch index a0f47bf0d..1f0a8d1ed 100644 --- a/patches/unapplied/server/0109-Add-boat-fall-damage-config.patch +++ b/patches/server/0106-Add-boat-fall-damage-config.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add boat fall damage config diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 8ed1a18cd1b33e1776dbf3b2294ab633f243daae..8419775b8c2c6c8d246d0011d81f540cd09cb403 100644 +index 7879d0e0b55977a372189649cfd3ac25afdaec50..255811157c36ac8018652cb031490221f998414b 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1113,7 +1113,16 @@ public class ServerPlayer extends Player { +@@ -1107,7 +1107,16 @@ public class ServerPlayer extends Player { if (this.isInvulnerableTo(source)) { return false; } else { @@ -25,9 +25,9 @@ index 8ed1a18cd1b33e1776dbf3b2294ab633f243daae..8419775b8c2c6c8d246d0011d81f540c + // Purpur end boolean flag = this.server.isDedicatedServer() && this.isPvpAllowed() && source.is(DamageTypeTags.IS_FALL); - if (!flag && isSpawnInvulnerable() && !source.is(DamageTypeTags.BYPASSES_INVULNERABILITY)) { // Purpur + if (!flag && this.spawnInvulnerableTime > 0 && !source.is(DamageTypeTags.BYPASSES_INVULNERABILITY)) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4968d157692e71c54be0fd76069ece3ba0294e5f..e3dbb3d81494ecdcedd06e7e16cc17a2d4e15112 100644 +index ed11a1ca61ef0401936cd612e463a2ad4111585f..3ecf34286db35cebad22bf09bd1f15d61908a2a1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -112,6 +112,7 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/server/0110-Snow-Golem-rate-of-fire-config.patch b/patches/server/0107-Snow-Golem-rate-of-fire-config.patch similarity index 94% rename from patches/unapplied/server/0110-Snow-Golem-rate-of-fire-config.patch rename to patches/server/0107-Snow-Golem-rate-of-fire-config.patch index 4c0235efc..0e9b27ee5 100644 --- a/patches/unapplied/server/0110-Snow-Golem-rate-of-fire-config.patch +++ b/patches/server/0107-Snow-Golem-rate-of-fire-config.patch @@ -23,10 +23,10 @@ index bd9dd01e9140c2ad0ab9859b9a455f73ab04a253..d3da7487f911ff791dca5f7b546dccda this.goalSelector.addGoal(3, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(4, new RandomLookAroundGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e3dbb3d81494ecdcedd06e7e16cc17a2d4e15112..7518f375450448b2f5aa71a999a2b213f78b7583 100644 +index 3ecf34286db35cebad22bf09bd1f15d61908a2a1..30635734e1109b0313039f01b46f0836eb5bdd70 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1609,6 +1609,10 @@ public class PurpurWorldConfig { +@@ -1605,6 +1605,10 @@ public class PurpurWorldConfig { public double snowGolemMaxHealth = 4.0D; public boolean snowGolemDropsPumpkin = true; public boolean snowGolemPutPumpkinBack = false; @@ -37,7 +37,7 @@ index e3dbb3d81494ecdcedd06e7e16cc17a2d4e15112..7518f375450448b2f5aa71a999a2b213 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1622,6 +1626,10 @@ public class PurpurWorldConfig { +@@ -1618,6 +1622,10 @@ public class PurpurWorldConfig { snowGolemMaxHealth = getDouble("mobs.snow_golem.attributes.max_health", snowGolemMaxHealth); snowGolemDropsPumpkin = getBoolean("mobs.snow_golem.drop-pumpkin-when-sheared", snowGolemDropsPumpkin); snowGolemPutPumpkinBack = getBoolean("mobs.snow_golem.pumpkin-can-be-added-back", snowGolemPutPumpkinBack); diff --git a/patches/unapplied/server/0111-EMC-Configurable-disable-give-dropping.patch b/patches/server/0108-EMC-Configurable-disable-give-dropping.patch similarity index 100% rename from patches/unapplied/server/0111-EMC-Configurable-disable-give-dropping.patch rename to patches/server/0108-EMC-Configurable-disable-give-dropping.patch diff --git a/patches/unapplied/server/0112-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch b/patches/server/0109-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch similarity index 97% rename from patches/unapplied/server/0112-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch rename to patches/server/0109-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch index 71c3c6a1e..9cae01760 100644 --- a/patches/unapplied/server/0112-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch +++ b/patches/server/0109-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch @@ -136,10 +136,10 @@ index cb1d91f9fe98f21c2afbe3894dfd9bca3bdd3ba6..d2703432af207c74ea8d298a784329c3 brain.setMemory(MemoryModuleType.SECONDARY_JOB_SITE, list); } else { 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 7d13a5308161d4093023b732bed7d06152f54737..605171aedb4f54dcd16837ad1e36097653a26ab6 100644 +index a3064132c1ecdbff0414d1c3048a400cef6bad59..b2d3fbe3574069691e6ee3718a095163bac9fc5f 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -223,7 +223,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -222,7 +222,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler brain.addActivity(Activity.PLAY, VillagerGoalPackages.getPlayPackage(0.5F)); } else { brain.setSchedule(Schedule.VILLAGER_DEFAULT); @@ -148,7 +148,7 @@ index 7d13a5308161d4093023b732bed7d06152f54737..605171aedb4f54dcd16837ad1e360976 } brain.addActivity(Activity.CORE, VillagerGoalPackages.getCorePackage(villagerprofession, 0.5F)); -@@ -978,6 +978,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -973,6 +973,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler public boolean hasFarmSeeds() { return this.getInventory().hasAnyMatching((itemstack) -> { @@ -174,10 +174,10 @@ index ac70c2c03241e73943bd517a8c69dd05e0873634..0318663a824d2a9515f867a075d148c3 public static final VillagerProfession FISHERMAN = register("fisherman", PoiTypes.FISHERMAN, SoundEvents.VILLAGER_WORK_FISHERMAN); public static final VillagerProfession FLETCHER = register("fletcher", PoiTypes.FLETCHER, SoundEvents.VILLAGER_WORK_FLETCHER); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7518f375450448b2f5aa71a999a2b213f78b7583..ab7a771a80d5288f79dca65fff3f984536d02d9a 100644 +index 30635734e1109b0313039f01b46f0836eb5bdd70..fe18b304ae649e93aefea3461a22151e7b7bdb40 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1812,6 +1812,8 @@ public class PurpurWorldConfig { +@@ -1808,6 +1808,8 @@ public class PurpurWorldConfig { public boolean villagerCanBeLeashed = false; public boolean villagerCanBreed = true; public int villagerBreedingTicks = 6000; @@ -186,7 +186,7 @@ index 7518f375450448b2f5aa71a999a2b213f78b7583..ab7a771a80d5288f79dca65fff3f9845 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1826,6 +1828,8 @@ public class PurpurWorldConfig { +@@ -1822,6 +1824,8 @@ public class PurpurWorldConfig { villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); villagerCanBreed = getBoolean("mobs.villager.can-breed", villagerCanBreed); villagerBreedingTicks = getInt("mobs.villager.breeding-delay-ticks", villagerBreedingTicks); diff --git a/patches/unapplied/server/0113-Toggle-for-Zombified-Piglin-death-always-counting-as.patch b/patches/server/0110-Toggle-for-Zombified-Piglin-death-always-counting-as.patch similarity index 87% rename from patches/unapplied/server/0113-Toggle-for-Zombified-Piglin-death-always-counting-as.patch rename to patches/server/0110-Toggle-for-Zombified-Piglin-death-always-counting-as.patch index 1665cd684..4596fd32d 100644 --- a/patches/unapplied/server/0113-Toggle-for-Zombified-Piglin-death-always-counting-as.patch +++ b/patches/server/0110-Toggle-for-Zombified-Piglin-death-always-counting-as.patch @@ -13,10 +13,10 @@ to the Piglin being angry, even though the player never hit them. This patch adds a toggle to disable this behavior. 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 3d61b27c23d90e87fdfc8c170eafc116716ac047..67fd554cfd6b848ca1f2cf804ad4543ad2c88845 100644 +index 764477c39e690d6373e17c77687809418e0de884..b2d77117309e81db60e7e50911247793fa829755 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java -@@ -152,7 +152,7 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { +@@ -148,7 +148,7 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { this.maybeAlertOthers(); } @@ -25,7 +25,7 @@ index 3d61b27c23d90e87fdfc8c170eafc116716ac047..67fd554cfd6b848ca1f2cf804ad4543a this.lastHurtByPlayerTime = this.tickCount; } -@@ -207,7 +207,7 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { +@@ -203,7 +203,7 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { this.ticksUntilNextAlert = ZombifiedPiglin.ALERT_INTERVAL.sample(this.random); } @@ -35,10 +35,10 @@ index 3d61b27c23d90e87fdfc8c170eafc116716ac047..67fd554cfd6b848ca1f2cf804ad4543a } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ab7a771a80d5288f79dca65fff3f984536d02d9a..b1d2c6b15c8d9977e8d8fcfe61485dab67cd9684 100644 +index fe18b304ae649e93aefea3461a22151e7b7bdb40..592ad59fb71d6d638301f5dd0c1b5b9f01fb1df8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2056,6 +2056,7 @@ public class PurpurWorldConfig { +@@ -2052,6 +2052,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyOnlyBaby = true; public double zombifiedPiglinJockeyChance = 0.05D; public boolean zombifiedPiglinJockeyTryExistingChickens = true; @@ -46,7 +46,7 @@ index ab7a771a80d5288f79dca65fff3f984536d02d9a..b1d2c6b15c8d9977e8d8fcfe61485dab private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2070,5 +2071,6 @@ public class PurpurWorldConfig { +@@ -2066,5 +2067,6 @@ public class PurpurWorldConfig { zombifiedPiglinJockeyOnlyBaby = getBoolean("mobs.zombified_piglin.jockey.only-babies", zombifiedPiglinJockeyOnlyBaby); zombifiedPiglinJockeyChance = getDouble("mobs.zombified_piglin.jockey.chance", zombifiedPiglinJockeyChance); zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens); diff --git a/patches/unapplied/server/0114-Configurable-chance-for-wolves-to-spawn-rabid.patch b/patches/server/0111-Configurable-chance-for-wolves-to-spawn-rabid.patch similarity index 93% rename from patches/unapplied/server/0114-Configurable-chance-for-wolves-to-spawn-rabid.patch rename to patches/server/0111-Configurable-chance-for-wolves-to-spawn-rabid.patch index c0af0a955..b760916d9 100644 --- a/patches/unapplied/server/0114-Configurable-chance-for-wolves-to-spawn-rabid.patch +++ b/patches/server/0111-Configurable-chance-for-wolves-to-spawn-rabid.patch @@ -7,7 +7,7 @@ Configurable chance to spawn a wolf that is rabid. Rabid wolves attack all players, mobs, and animals. 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 d8c73365915e67b38292c96a9601f983f121bdf9..f39b278bc520a4785e9fa472bccd836ad1daac85 100644 +index 39a923e48750bd960f64aad248c10dd390afc239..6a822abe936aed83da595980e0f698354a205b0b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java @@ -10,6 +10,7 @@ import net.minecraft.network.syncher.EntityDataAccessor; @@ -55,7 +55,7 @@ index d8c73365915e67b38292c96a9601f983f121bdf9..f39b278bc520a4785e9fa472bccd836a import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.gameevent.GameEvent; import net.minecraft.world.level.pathfinder.BlockPathTypes; -@@ -84,6 +91,37 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -86,6 +93,37 @@ public class Wolf extends TamableAnimal implements NeutralMob { return entitytypes == EntityType.SHEEP || entitytypes == EntityType.RABBIT || entitytypes == EntityType.FOX; }; @@ -93,7 +93,7 @@ index d8c73365915e67b38292c96a9601f983f121bdf9..f39b278bc520a4785e9fa472bccd836a private static final float START_HEALTH = 8.0F; private static final float TAME_HEALTH = 20.0F; private float interestedAngle; -@@ -135,6 +173,37 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -137,6 +175,37 @@ public class Wolf extends TamableAnimal implements NeutralMob { return this.level().purpurConfig.wolfBreedingTicks; } @@ -131,7 +131,7 @@ index d8c73365915e67b38292c96a9601f983f121bdf9..f39b278bc520a4785e9fa472bccd836a @Override protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); -@@ -142,6 +211,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -144,6 +213,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { this.goalSelector.addGoal(1, new Wolf.WolfPanicGoal(1.5D)); this.goalSelector.addGoal(2, new SitWhenOrderedToGoal(this)); this.goalSelector.addGoal(3, new Wolf.WolfAvoidEntityGoal<>(this, Llama.class, 24.0F, 1.5D, 1.5D)); @@ -139,7 +139,7 @@ index d8c73365915e67b38292c96a9601f983f121bdf9..f39b278bc520a4785e9fa472bccd836a this.goalSelector.addGoal(4, new LeapAtTargetGoal(this, 0.4F)); this.goalSelector.addGoal(5, new MeleeAttackGoal(this, 1.0D, true)); this.goalSelector.addGoal(6, new FollowOwnerGoal(this, 1.0D, 10.0F, 2.0F, false)); -@@ -155,7 +225,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -157,7 +227,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { this.targetSelector.addGoal(2, new OwnerHurtTargetGoal(this)); this.targetSelector.addGoal(3, (new HurtByTargetGoal(this, new Class[0])).setAlertOthers()); this.targetSelector.addGoal(4, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, this::isAngryAt)); @@ -148,7 +148,7 @@ index d8c73365915e67b38292c96a9601f983f121bdf9..f39b278bc520a4785e9fa472bccd836a this.targetSelector.addGoal(6, new NonTameRandomTargetGoal<>(this, Turtle.class, false, Turtle.BABY_ON_LAND_SELECTOR)); this.targetSelector.addGoal(7, new NearestAttackableTargetGoal<>(this, AbstractSkeleton.class, false)); this.targetSelector.addGoal(8, new ResetUniversalAngerTargetGoal<>(this, true)); -@@ -182,6 +252,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -184,6 +254,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { public void addAdditionalSaveData(CompoundTag nbt) { super.addAdditionalSaveData(nbt); nbt.putByte("CollarColor", (byte) this.getCollarColor().getId()); @@ -156,7 +156,7 @@ index d8c73365915e67b38292c96a9601f983f121bdf9..f39b278bc520a4785e9fa472bccd836a this.addPersistentAngerSaveData(nbt); } -@@ -191,6 +262,10 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -193,6 +264,10 @@ public class Wolf extends TamableAnimal implements NeutralMob { if (nbt.contains("CollarColor", 99)) { this.setCollarColor(DyeColor.byId(nbt.getInt("CollarColor"))); } @@ -167,7 +167,7 @@ index d8c73365915e67b38292c96a9601f983f121bdf9..f39b278bc520a4785e9fa472bccd836a this.readPersistentAngerSaveData(this.level(), nbt); } -@@ -235,6 +310,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -237,6 +312,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { public void tick() { super.tick(); if (this.isAlive()) { @@ -179,7 +179,7 @@ index d8c73365915e67b38292c96a9601f983f121bdf9..f39b278bc520a4785e9fa472bccd836a this.interestedAngleO = this.interestedAngle; if (this.isInterested()) { this.interestedAngle += (1.0F - this.interestedAngle) * 0.4F; -@@ -450,6 +530,19 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -452,6 +532,19 @@ public class Wolf extends TamableAnimal implements NeutralMob { } return InteractionResult.SUCCESS; @@ -221,10 +221,10 @@ index e16459c9cfcac790edd6d912750d32c68387cbbc..890938ad866e2c588f3f819230ba121b + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b1d2c6b15c8d9977e8d8fcfe61485dab67cd9684..839f95b52f3ca44ea479d09b37f7b8aaa67f9672 100644 +index 592ad59fb71d6d638301f5dd0c1b5b9f01fb1df8..0c0d5c6dd4d2ed8c5b71acc47fcc9faafd3212b7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1941,6 +1941,8 @@ public class PurpurWorldConfig { +@@ -1937,6 +1937,8 @@ public class PurpurWorldConfig { public boolean wolfRidableInWater = true; public boolean wolfControllable = true; public double wolfMaxHealth = 8.0D; @@ -233,7 +233,7 @@ index b1d2c6b15c8d9977e8d8fcfe61485dab67cd9684..839f95b52f3ca44ea479d09b37f7b8aa public int wolfBreedingTicks = 6000; private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); -@@ -1952,6 +1954,8 @@ public class PurpurWorldConfig { +@@ -1948,6 +1950,8 @@ public class PurpurWorldConfig { set("mobs.wolf.attributes.max_health", oldValue); } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); diff --git a/patches/unapplied/server/0115-Configurable-default-collar-color.patch b/patches/server/0112-Configurable-default-collar-color.patch similarity index 86% rename from patches/unapplied/server/0115-Configurable-default-collar-color.patch rename to patches/server/0112-Configurable-default-collar-color.patch index bbb4d5294..1842260b8 100644 --- a/patches/unapplied/server/0115-Configurable-default-collar-color.patch +++ b/patches/server/0112-Configurable-default-collar-color.patch @@ -7,10 +7,10 @@ This allows for the server to set a default collar color when a wolf or cat is t Resets to RED when the value is invalid. diff --git a/src/main/java/net/minecraft/world/entity/animal/Cat.java b/src/main/java/net/minecraft/world/entity/animal/Cat.java -index ffa2128b63e5e45c2a41e31a6b8b6e8df0bf9be4..956f125c9ae62537570bb9870be66872f3519f6a 100644 +index a5b1cc957b824f8cc36693128ce05f5d556cf7d7..fff1da136b618ca8b9256b55996dc1d01dacd7b8 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cat.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java -@@ -345,6 +345,14 @@ public class Cat extends TamableAnimal implements VariantHolder { +@@ -346,6 +346,14 @@ public class Cat extends TamableAnimal implements VariantHolder { return Mth.lerp(tickDelta, this.relaxStateOneAmountO, this.relaxStateOneAmount); } @@ -26,10 +26,10 @@ index ffa2128b63e5e45c2a41e31a6b8b6e8df0bf9be4..956f125c9ae62537570bb9870be66872 @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 f39b278bc520a4785e9fa472bccd836ad1daac85..8d71d0ad4bf8e0df8ded9ebce6f39e66dd632bb5 100644 +index 6a822abe936aed83da595980e0f698354a205b0b..bbecb3894d0f4a24442e8833f4d828e6173287da 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -@@ -204,6 +204,12 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -206,6 +206,12 @@ public class Wolf extends TamableAnimal implements NeutralMob { return super.finalizeSpawn(world, difficulty, type, data, nbt); } @@ -43,10 +43,10 @@ index f39b278bc520a4785e9fa472bccd836ad1daac85..8d71d0ad4bf8e0df8ded9ebce6f39e66 protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 839f95b52f3ca44ea479d09b37f7b8aaa67f9672..5ddb33b3f6811ddea949b08ed72e9355489b9167 100644 +index 0c0d5c6dd4d2ed8c5b71acc47fcc9faafd3212b7..96d21c69da492eb6646e3cc71029cbe6208c6406 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -625,6 +625,7 @@ public class PurpurWorldConfig { +@@ -621,6 +621,7 @@ public class PurpurWorldConfig { public int catSpawnSwampHutScanRange = 16; public int catSpawnVillageScanRange = 48; public int catBreedingTicks = 6000; @@ -54,7 +54,7 @@ index 839f95b52f3ca44ea479d09b37f7b8aaa67f9672..5ddb33b3f6811ddea949b08ed72e9355 private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -639,6 +640,11 @@ public class PurpurWorldConfig { +@@ -635,6 +636,11 @@ public class PurpurWorldConfig { catSpawnSwampHutScanRange = getInt("mobs.cat.scan-range-for-other-cats.swamp-hut", catSpawnSwampHutScanRange); catSpawnVillageScanRange = getInt("mobs.cat.scan-range-for-other-cats.village", catSpawnVillageScanRange); catBreedingTicks = getInt("mobs.cat.breeding-delay-ticks", catBreedingTicks); @@ -66,7 +66,7 @@ index 839f95b52f3ca44ea479d09b37f7b8aaa67f9672..5ddb33b3f6811ddea949b08ed72e9355 } public boolean caveSpiderRidable = false; -@@ -1941,6 +1947,7 @@ public class PurpurWorldConfig { +@@ -1937,6 +1943,7 @@ public class PurpurWorldConfig { public boolean wolfRidableInWater = true; public boolean wolfControllable = true; public double wolfMaxHealth = 8.0D; @@ -74,7 +74,7 @@ index 839f95b52f3ca44ea479d09b37f7b8aaa67f9672..5ddb33b3f6811ddea949b08ed72e9355 public boolean wolfMilkCuresRabies = true; public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; -@@ -1954,6 +1961,11 @@ public class PurpurWorldConfig { +@@ -1950,6 +1957,11 @@ public class PurpurWorldConfig { set("mobs.wolf.attributes.max_health", oldValue); } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); diff --git a/patches/unapplied/server/0116-Phantom-flames-on-swoop.patch b/patches/server/0113-Phantom-flames-on-swoop.patch similarity index 84% rename from patches/unapplied/server/0116-Phantom-flames-on-swoop.patch rename to patches/server/0113-Phantom-flames-on-swoop.patch index 3cd4ccdfc..74e54c201 100644 --- a/patches/unapplied/server/0116-Phantom-flames-on-swoop.patch +++ b/patches/server/0113-Phantom-flames-on-swoop.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Phantom flames on swoop 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 899a7d3989b51456600787ae09b1736f83bf9a65..076a881412d40ce6a8f5e5f83f7598bfa08f199c 100644 +index 6849b2ad3b2db840a1af35ef069490506449c861..0f13a3f38760f1117bd545702db7a5b168d9e273 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -@@ -243,6 +243,7 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -244,6 +244,7 @@ public class Phantom extends FlyingMob implements Enemy { this.level().addParticle(ParticleTypes.MYCELIUM, this.getX() - (double) f2, this.getY() + (double) f4, this.getZ() - (double) f3, 0.0D, 0.0D, 0.0D); } @@ -17,10 +17,10 @@ index 899a7d3989b51456600787ae09b1736f83bf9a65..076a881412d40ce6a8f5e5f83f7598bf @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5ddb33b3f6811ddea949b08ed72e9355489b9167..d755e920048324ae17a08fee7546a4b2fb594f7c 100644 +index 96d21c69da492eb6646e3cc71029cbe6208c6406..e7a9a9c1a5261076f810d58a7be137354ac14d1a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1303,6 +1303,7 @@ public class PurpurWorldConfig { +@@ -1299,6 +1299,7 @@ public class PurpurWorldConfig { public int phantomBurnInLight = 0; public boolean phantomIgnorePlayersWithTorch = false; public boolean phantomBurnInDaylight = true; @@ -28,7 +28,7 @@ index 5ddb33b3f6811ddea949b08ed72e9355489b9167..d755e920048324ae17a08fee7546a4b2 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1336,6 +1337,7 @@ public class PurpurWorldConfig { +@@ -1332,6 +1333,7 @@ public class PurpurWorldConfig { phantomBurnInLight = getInt("mobs.phantom.burn-in-light", phantomBurnInLight); phantomBurnInDaylight = getBoolean("mobs.phantom.burn-in-daylight", phantomBurnInDaylight); phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch); diff --git a/patches/unapplied/server/0117-Option-for-chests-to-open-even-with-a-solid-block-on.patch b/patches/server/0114-Option-for-chests-to-open-even-with-a-solid-block-on.patch similarity index 91% rename from patches/unapplied/server/0117-Option-for-chests-to-open-even-with-a-solid-block-on.patch rename to patches/server/0114-Option-for-chests-to-open-even-with-a-solid-block-on.patch index e88900d66..b843cf0e6 100644 --- a/patches/unapplied/server/0117-Option-for-chests-to-open-even-with-a-solid-block-on.patch +++ b/patches/server/0114-Option-for-chests-to-open-even-with-a-solid-block-on.patch @@ -17,10 +17,10 @@ index 5e22d175b1048a58802cdf64ac70a8b56329e915..d81946b400f208c39941128ce823ff77 return world.getBlockState(blockposition1).isRedstoneConductor(world, blockposition1); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d755e920048324ae17a08fee7546a4b2fb594f7c..57cb484499525278fe2664ccba83503e9344a874 100644 +index e7a9a9c1a5261076f810d58a7be137354ac14d1a..74a210a911211d38be77a6d00a0c032c14f48aad 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -423,6 +423,11 @@ public class PurpurWorldConfig { +@@ -419,6 +419,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/unapplied/server/0118-Implement-TPSBar.patch b/patches/server/0115-Implement-TPSBar.patch similarity index 94% rename from patches/unapplied/server/0118-Implement-TPSBar.patch rename to patches/server/0115-Implement-TPSBar.patch index 960b0c392..e0b52ee1c 100644 --- a/patches/unapplied/server/0118-Implement-TPSBar.patch +++ b/patches/server/0115-Implement-TPSBar.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Implement TPSBar diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index e5b1b6ad32c48a4ba13b4930954fad18669677ad..4e721dfca7559620d8ce65a6703f2089a839f4a0 100644 +index 637648e03985868c1fe420f84fa778b06deb23ee..e1887523b0b6a0479544385932f54ab1de0295ae 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java -@@ -227,6 +227,7 @@ public class Commands { +@@ -233,6 +233,7 @@ public class Commands { org.purpurmc.purpur.command.CreditsCommand.register(this.dispatcher); // Purpur org.purpurmc.purpur.command.DemoCommand.register(this.dispatcher); // Purpur org.purpurmc.purpur.command.PingCommand.register(this.dispatcher); // Purpur @@ -17,10 +17,10 @@ index e5b1b6ad32c48a4ba13b4930954fad18669677ad..4e721dfca7559620d8ce65a6703f2089 if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index fd3a85a2b0e2dca36044535f8ff77fec63f73aee..d87e3a201d0fddd4c212de1de98ca2870e481149 100644 +index 58bd3a05621a2a513efdaa81d63e6c3fff1b3b35..43bd000ff6e91e23198799f74fd0895f0a02fcc1 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1022,6 +1022,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop viewDistances = new java.util.concurrent.atomic.AtomicReference<>(new io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances(-1, -1, -1)); - public io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader; @@ -560,6 +561,7 @@ public class ServerPlayer extends Player { } } @@ -68,7 +68,7 @@ index b72790d23165073cd7529262577cd89ce9e518dd..2e04d1b93dc0ca8b83697d5743250c47 } // CraftBukkit start - World fallback code, either respawn location or global spawn -@@ -2794,5 +2797,13 @@ public class ServerPlayer extends Player { +@@ -2767,5 +2770,13 @@ public class ServerPlayer extends Player { this.server.getPlayerList().respawn(this, toLevel, true, to, !toLevel.paperConfig().environment.disableTeleportationSuffocationCheck, org.bukkit.event.player.PlayerRespawnEvent.RespawnReason.DEATH); } } @@ -83,10 +83,10 @@ index b72790d23165073cd7529262577cd89ce9e518dd..2e04d1b93dc0ca8b83697d5743250c47 // Purpur end } diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 9cecf7d3e2f860f9de5dd13a352d8d7ed6f95266..9a60fa370f37179a7460b316d26e601197b478c7 100644 +index c6adced2551977dff3000dce8f6c0b35c295e85e..d711decc32169f662818d8db60d3dd8182efbc00 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -484,6 +484,7 @@ public abstract class PlayerList { +@@ -467,6 +467,7 @@ public abstract class PlayerList { scoreboard.addPlayerToTeam(player.getScoreboardName(), collideRuleTeam); } // Paper end @@ -94,7 +94,7 @@ index 9cecf7d3e2f860f9de5dd13a352d8d7ed6f95266..9a60fa370f37179a7460b316d26e6011 // CraftBukkit - Moved from above, added world PlayerList.LOGGER.info("{}[{}] logged in with entity id {} at ([{}]{}, {}, {})", player.getName().getString(), s1, player.getId(), worldserver1.serverLevelData.getLevelName(), player.getX(), player.getY(), player.getZ()); } -@@ -593,6 +594,7 @@ public abstract class PlayerList { +@@ -580,6 +581,7 @@ public abstract class PlayerList { } public net.kyori.adventure.text.Component remove(ServerPlayer entityplayer, net.kyori.adventure.text.Component leaveMessage) { // Paper end diff --git a/patches/unapplied/server/0119-Striders-give-saddle-back.patch b/patches/server/0116-Striders-give-saddle-back.patch similarity index 86% rename from patches/unapplied/server/0119-Striders-give-saddle-back.patch rename to patches/server/0116-Striders-give-saddle-back.patch index 9a4a1f0bb..dbf0cea34 100644 --- a/patches/unapplied/server/0119-Striders-give-saddle-back.patch +++ b/patches/server/0116-Striders-give-saddle-back.patch @@ -5,10 +5,10 @@ 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 93dca4758ed995373fe1585930f225604a4153fa..4c077c94b654f54465ece2aa45c5ead0a417ad0d 100644 +index 10136a5062d154456c962e7d1a99c2dedbd568ed..64503362c42daa39dcfa270bc50b0e2187f13a01 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 { +@@ -484,6 +484,19 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { public InteractionResult mobInteract(Player player, InteractionHand hand) { boolean flag = this.isFood(player.getItemInHand(hand)); @@ -29,10 +29,10 @@ index 93dca4758ed995373fe1585930f225604a4153fa..4c077c94b654f54465ece2aa45c5ead0 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 57cb484499525278fe2664ccba83503e9344a874..a0607bcc0da66718928c0ca6e0e02a5a4a56eaf4 100644 +index 74a210a911211d38be77a6d00a0c032c14f48aad..a877974c3b3336ae49da1bcf56b66427d1748c35 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1715,6 +1715,7 @@ public class PurpurWorldConfig { +@@ -1711,6 +1711,7 @@ public class PurpurWorldConfig { public boolean striderControllable = true; public double striderMaxHealth = 20.0D; public int striderBreedingTicks = 6000; @@ -40,7 +40,7 @@ index 57cb484499525278fe2664ccba83503e9344a874..a0607bcc0da66718928c0ca6e0e02a5a private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1726,6 +1727,7 @@ public class PurpurWorldConfig { +@@ -1722,6 +1723,7 @@ public class PurpurWorldConfig { } striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); diff --git a/patches/unapplied/server/0120-PlayerBookTooLargeEvent.patch b/patches/server/0117-PlayerBookTooLargeEvent.patch similarity index 89% rename from patches/unapplied/server/0120-PlayerBookTooLargeEvent.patch rename to patches/server/0117-PlayerBookTooLargeEvent.patch index 0a443fe91..6127af263 100644 --- a/patches/unapplied/server/0120-PlayerBookTooLargeEvent.patch +++ b/patches/server/0117-PlayerBookTooLargeEvent.patch @@ -5,10 +5,10 @@ Subject: [PATCH] PlayerBookTooLargeEvent diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 8126b1a67e62077c8a78f13deee767236665d7fa..6c5b0d1d8fe7fae29dc1ed449e0412c9f449acf9 100644 +index 2976ddef7292f3cdf14353d20b1e4e2085dbb1a8..4b48e20b88724ef7253c11ffd0f5787d40b37217 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1279,10 +1279,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -1147,10 +1147,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl int maxBookPageSize = io.papermc.paper.configuration.GlobalConfiguration.get().itemValidation.bookSize.pageMax; double multiplier = Math.max(0.3D, Math.min(1D, io.papermc.paper.configuration.GlobalConfiguration.get().itemValidation.bookSize.totalMultiplier)); long byteAllowed = maxBookPageSize; @@ -21,7 +21,7 @@ index 8126b1a67e62077c8a78f13deee767236665d7fa..6c5b0d1d8fe7fae29dc1ed449e0412c9 server.scheduleOnMain(() -> this.disconnect("Book too large!", org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION)); // Paper - kick event cause return; } -@@ -1306,6 +1308,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -1174,6 +1176,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl if (byteTotal > byteAllowed) { ServerGamePacketListenerImpl.LOGGER.warn(this.player.getScoreboardName() + " tried to send too large of a book. Book Size: " + byteTotal + " - Allowed: "+ byteAllowed + " - Pages: " + pageList.size()); diff --git a/patches/unapplied/server/0121-Full-netherite-armor-grants-fire-resistance.patch b/patches/server/0118-Full-netherite-armor-grants-fire-resistance.patch similarity index 93% rename from patches/unapplied/server/0121-Full-netherite-armor-grants-fire-resistance.patch rename to patches/server/0118-Full-netherite-armor-grants-fire-resistance.patch index c602cf303..05957c47a 100644 --- a/patches/unapplied/server/0121-Full-netherite-armor-grants-fire-resistance.patch +++ b/patches/server/0118-Full-netherite-armor-grants-fire-resistance.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Full netherite armor grants fire resistance diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index fa2a0cc24bbe31abd49ce0f3f41bab2aa5d9c81f..04e816f01db7d2de7ffa9bbaaa72daadaab34831 100644 +index dd7e47ddde00e0b4f3b9833c1793246547ba0cf2..a21feaa31c6aa3c7f2198b3b4a84af101aa16988 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -366,6 +366,16 @@ public abstract class Player extends LivingEntity { +@@ -367,6 +367,16 @@ public abstract class Player extends LivingEntity { this.addEffect(new MobEffectInstance(MobEffects.WATER_BREATHING, 200, 0, false, false, true), org.bukkit.event.entity.EntityPotionEffectEvent.Cause.TURTLE_HELMET); // CraftBukkit } @@ -26,7 +26,7 @@ index fa2a0cc24bbe31abd49ce0f3f41bab2aa5d9c81f..04e816f01db7d2de7ffa9bbaaa72daad protected ItemCooldowns createItemCooldowns() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a0607bcc0da66718928c0ca6e0e02a5a4a56eaf4..2606c631d93c8e7b99b0ac1fffffa6b0ce388679 100644 +index a877974c3b3336ae49da1bcf56b66427d1748c35..be24ad68043d014d23879dfe4730c582a7b81689 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -295,6 +295,19 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/server/0122-Fix-rotating-UP-DOWN-CW-and-CCW.patch b/patches/server/0119-Fix-rotating-UP-DOWN-CW-and-CCW.patch similarity index 83% rename from patches/unapplied/server/0122-Fix-rotating-UP-DOWN-CW-and-CCW.patch rename to patches/server/0119-Fix-rotating-UP-DOWN-CW-and-CCW.patch index 514296a73..3aa798929 100644 --- a/patches/unapplied/server/0122-Fix-rotating-UP-DOWN-CW-and-CCW.patch +++ b/patches/server/0119-Fix-rotating-UP-DOWN-CW-and-CCW.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix rotating UP/DOWN CW and CCW diff --git a/src/main/java/net/minecraft/core/Direction.java b/src/main/java/net/minecraft/core/Direction.java -index d0a8092bf57a29ab7c00ec0ddf52a9fdb2a33267..defe5951938ce3a7b7f83017d4af36bb49ff5be0 100644 +index 392406722b0a040c1d41fdc1154d75d39f6e9c86..b805e57d5a67d77d226cd8154e970050e2e8ef4a 100644 --- a/src/main/java/net/minecraft/core/Direction.java +++ b/src/main/java/net/minecraft/core/Direction.java -@@ -238,6 +238,12 @@ public enum Direction implements StringRepresentable { +@@ -253,6 +253,12 @@ public enum Direction implements StringRepresentable { case EAST: var10000 = SOUTH; break; @@ -21,7 +21,7 @@ index d0a8092bf57a29ab7c00ec0ddf52a9fdb2a33267..defe5951938ce3a7b7f83017d4af36bb default: throw new IllegalStateException("Unable to get Y-rotated facing of " + this); } -@@ -350,6 +356,12 @@ public enum Direction implements StringRepresentable { +@@ -365,6 +371,12 @@ public enum Direction implements StringRepresentable { case EAST: var10000 = NORTH; break; diff --git a/patches/unapplied/server/0123-Add-mobGriefing-bypass-to-everything-affected.patch b/patches/server/0120-Add-mobGriefing-bypass-to-everything-affected.patch similarity index 90% rename from patches/unapplied/server/0123-Add-mobGriefing-bypass-to-everything-affected.patch rename to patches/server/0120-Add-mobGriefing-bypass-to-everything-affected.patch index b180aa709..b10570b5d 100644 --- a/patches/unapplied/server/0123-Add-mobGriefing-bypass-to-everything-affected.patch +++ b/patches/server/0120-Add-mobGriefing-bypass-to-everything-affected.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add mobGriefing bypass to everything affected diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 5b6b650e9fc477176d3229c28141d61ad50a2cda..47d1c9cd74454cb0ff2b3e0bcad40a3208129c7a 100644 +index de704fea146a758f27dc5c476ef08b58b4524e53..73f3853b4e554fc75b9f49f11df1060bd6340261 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1772,7 +1772,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1793,7 +1793,7 @@ public abstract class LivingEntity extends Entity implements Attackable { boolean flag = false; if (this.dead && adversary instanceof WitherBoss) { // Paper @@ -18,10 +18,10 @@ index 5b6b650e9fc477176d3229c28141d61ad50a2cda..47d1c9cd74454cb0ff2b3e0bcad40a32 BlockState iblockdata = Blocks.WITHER_ROSE.defaultBlockState(); diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 50747e73ab0a37073e431db82d79b1ebc024d347..6ae71386cdc0d30defd9a86b97f5e619d2dbf5fe 100644 +index a6dc66e4e6d53146fff3f7c6af10d9c743343568..6766e78c961d17a6f380f6814c9ddb120b374d5f 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -703,7 +703,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -702,7 +702,7 @@ public abstract class Mob extends LivingEntity implements Targeting { public void aiStep() { super.aiStep(); this.level().getProfiler().push("looting"); @@ -92,10 +92,10 @@ index 509317a26c79f453335df1c19dc4c9ec570046af..8e4d673e4f2d7f50ea5ed13794da08b1 } else if (this.nextStartTick > 0) { --this.nextStartTick; 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 2cf00af66b73e1891fadcabcf83307873cbed710..2a6f6753ce9b7ab899256edc181a92c19021822b 100644 +index b13429e254bd056cf942f39d46976ff0ef2a97f3..948760c9ee6ba921a7f1b4200fc77aa13f198984 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java -@@ -1377,7 +1377,7 @@ public class Fox extends Animal implements VariantHolder { +@@ -1385,7 +1385,7 @@ public class Fox extends Animal implements VariantHolder { } protected void onReachedTarget() { @@ -105,10 +105,10 @@ index 2cf00af66b73e1891fadcabcf83307873cbed710..2a6f6753ce9b7ab899256edc181a92c1 if (iblockdata.is(Blocks.SWEET_BERRY_BUSH)) { diff --git a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java -index 787391763cac2ae6ed9c178c44616b992849e819..0187af6c3380c1880ae1e3b8982b1543ae9da4a5 100644 +index c25776ef9805f3f4e31ca5b027e6577526e48819..86502ef70f2213191d1348ef98969c5c93a6cb95 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java +++ b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java -@@ -633,7 +633,7 @@ public class Rabbit extends Animal implements VariantHolder { +@@ -634,7 +634,7 @@ public class Rabbit extends Animal implements VariantHolder { @Override public boolean canUse() { if (this.nextStartTick <= 0) { @@ -131,10 +131,10 @@ index d3da7487f911ff791dca5f7b546dccda751fe44c..84e0a41620fd52af0cd22dc92fd13ee4 } diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index 3898653acb6127c88a94b5e7111a9cfecb2d136e..8f71c3b94ed17fd72e6bacce7d0a8e3943c37c36 100644 +index 4149a7aea12cac04a2dfe29e071047de461eb3f4..0d16d486c7efc9a8c4c0db648175cacee5aa3a04 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -@@ -612,7 +612,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -603,7 +603,7 @@ public class EnderDragon extends Mob implements Enemy { BlockState iblockdata = this.level().getBlockState(blockposition); if (!iblockdata.isAir() && !iblockdata.is(BlockTags.DRAGON_TRANSPARENT)) { @@ -144,10 +144,10 @@ index 3898653acb6127c88a94b5e7111a9cfecb2d136e..8f71c3b94ed17fd72e6bacce7d0a8e39 // flag1 = this.level().removeBlock(blockposition, false) || flag1; flag1 = true; 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 8796b779ac0550e32c7313b1280278de48070baf..97be7061d3cccac7b64f4b1a234ccbd83e2b7407 100644 +index b395d5c85f26ca4252d3f8f886b2ee5a7892af5f..17432b434c899a4d075e4619b4a2bfe3d5761b49 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 -@@ -492,7 +492,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -485,7 +485,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob if (this.destroyBlocksTick > 0) { --this.destroyBlocksTick; @@ -157,10 +157,10 @@ index 8796b779ac0550e32c7313b1280278de48070baf..97be7061d3cccac7b64f4b1a234ccbd8 j = Mth.floor(this.getX()); int i1 = Mth.floor(this.getZ()); 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 f49cbb9fcd13afc10aa76ac80128162a902ae345..65a6073a976ce0924ce3a9c7a34253b7e5a9fcec 100644 +index 1985461125defcc2ce40c44408f223ab479e0525..58b3163898cf75c5e8bff020e65e8abe4af92000 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -542,7 +542,15 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -543,7 +543,15 @@ public class EnderMan extends Monster implements NeutralMob { @Override public boolean canUse() { if (!enderman.level().purpurConfig.endermanAllowGriefing) return false; // Purpur @@ -177,7 +177,7 @@ index f49cbb9fcd13afc10aa76ac80128162a902ae345..65a6073a976ce0924ce3a9c7a34253b7 } @Override -@@ -588,7 +596,15 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -589,7 +597,15 @@ public class EnderMan extends Monster implements NeutralMob { @Override public boolean canUse() { if (!enderman.level().purpurConfig.endermanAllowGriefing) return false; // Purpur @@ -195,10 +195,10 @@ index f49cbb9fcd13afc10aa76ac80128162a902ae345..65a6073a976ce0924ce3a9c7a34253b7 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Evoker.java b/src/main/java/net/minecraft/world/entity/monster/Evoker.java -index f71a70a72ba0bb01c26291ad9dbdd3b01bbf6ee7..ea2a2c56f94d03b73a5e3a06f91aee7fcb0867f4 100644 +index 86999c7932216871b4b6e06d68168e3b48038a18..fbcb6b4cf4234d6eba989210012ab360c1b323a4 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Evoker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Evoker.java -@@ -341,7 +341,7 @@ public class Evoker extends SpellcasterIllager { +@@ -345,7 +345,7 @@ public class Evoker extends SpellcasterIllager { return false; } else if (Evoker.this.tickCount < this.nextAttackTickCount) { return false; @@ -208,10 +208,10 @@ index f71a70a72ba0bb01c26291ad9dbdd3b01bbf6ee7..ea2a2c56f94d03b73a5e3a06f91aee7f } else { List list = Evoker.this.level().getNearbyEntities(Sheep.class, this.wololoTargeting, Evoker.this, Evoker.this.getBoundingBox().inflate(16.0D, 4.0D, 16.0D)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Ravager.java b/src/main/java/net/minecraft/world/entity/monster/Ravager.java -index 92b14a6056dfbf07852fc0ee0e3eaf7b4c1657a4..ab13d20dda5a8af471fd459950e7c3e2215e59db 100644 +index 28795558000d76fd255faabc79cc45600efa2c92..5aa00878c4c7be4a38137a93b1a2cf1c468422ea 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Ravager.java +++ b/src/main/java/net/minecraft/world/entity/monster/Ravager.java -@@ -193,7 +193,7 @@ public class Ravager extends Raider { +@@ -176,7 +176,7 @@ public class Ravager extends Raider { this.getAttribute(Attributes.MOVEMENT_SPEED).setBaseValue(Mth.lerp(0.1D, d1, d0)); } @@ -221,10 +221,10 @@ index 92b14a6056dfbf07852fc0ee0e3eaf7b4c1657a4..ab13d20dda5a8af471fd459950e7c3e2 AABB axisalignedbb = this.getBoundingBox().inflate(0.2D); Iterator iterator = BlockPos.betweenClosed(Mth.floor(axisalignedbb.minX), Mth.floor(axisalignedbb.minY), Mth.floor(axisalignedbb.minZ), Mth.floor(axisalignedbb.maxX), Mth.floor(axisalignedbb.maxY), Mth.floor(axisalignedbb.maxZ)).iterator(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java -index 43b330e263ebe20b76629c350bf7773220f6583e..8f813469ece9f57b19335a155e97d73ed8ce1478 100644 +index 1738f0a251e4cab2eb3f122e83366afb02201765..49a37d294bac8205ac0a795daa300ccc8170c8a8 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java +++ b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java -@@ -208,7 +208,7 @@ public class Silverfish extends Monster { +@@ -210,7 +210,7 @@ public class Silverfish extends Monster { continue; } // CraftBukkit end @@ -233,7 +233,7 @@ index 43b330e263ebe20b76629c350bf7773220f6583e..8f813469ece9f57b19335a155e97d73e world.destroyBlock(blockposition1, true, this.silverfish); } else { world.setBlock(blockposition1, ((InfestedBlock) block).hostStateByInfested(world.getBlockState(blockposition1)), 3); -@@ -246,7 +246,7 @@ public class Silverfish extends Monster { +@@ -248,7 +248,7 @@ public class Silverfish extends Monster { } else { RandomSource randomsource = this.mob.getRandom(); @@ -243,10 +243,10 @@ index 43b330e263ebe20b76629c350bf7773220f6583e..8f813469ece9f57b19335a155e97d73e BlockPos blockposition = BlockPos.containing(this.mob.getX(), this.mob.getY() + 0.5D, this.mob.getZ()).relative(this.selectedDirection); BlockState iblockdata = this.mob.level().getBlockState(blockposition); diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -index e45c061931c5ca03e204b78e60010a906d3ec945..e2e9545a583deb1e2bbdcb76e459d8bd481d5d77 100644 +index 7507b22e4ec079f359974d7e05eff3b29e59c8e6..f7ea134aa7ea4d783e3bbe53eefd04d62d7e732a 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -@@ -429,7 +429,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento +@@ -423,7 +423,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento @Override public boolean wantsToPickUp(ItemStack stack) { @@ -284,10 +284,10 @@ index 251e6bc87eb02ec4372062ef22b21249ac5164ff..6b60597a0e837054b0d1891c1e6e5e7c // CraftBukkit start - fire ExplosionPrimeEvent ExplosionPrimeEvent event = new ExplosionPrimeEvent((org.bukkit.entity.Explosive) this.getBukkitEntity()); diff --git a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -index cd0629581bae5f805842157af36c2d838e01bee3..b0a559dfefac693bda8692a30fbaa5ac8062ef27 100644 +index a90317100d32974e481e14476843f66997a2cf3a..6b9236704d063b09b7948f378670e35b4ab98ffb 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java +++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -@@ -326,6 +326,6 @@ public abstract class Projectile extends Entity implements TraceableEntity { +@@ -296,6 +296,6 @@ public abstract class Projectile extends Entity implements TraceableEntity { public boolean mayInteract(Level world, BlockPos pos) { Entity entity = this.getOwner(); @@ -309,7 +309,7 @@ index 04c2ea1ff44af72ae48e2d6b7b912b1c14285038..7839d856b3f924f0c87b298d9a1e3b15 // CraftBukkit end } diff --git a/src/main/java/net/minecraft/world/entity/raid/Raider.java b/src/main/java/net/minecraft/world/entity/raid/Raider.java -index 57fdcdaf54fd1c92a6e51a3a81789029096e5abe..822dd4265ce02252afadbc652064450b7dfd7e0d 100644 +index cdbc925ef61b8b439415f0a89368227890bcecb2..300411e88cdaef7e0ce280edbd5f18fa8d004a33 100644 --- a/src/main/java/net/minecraft/world/entity/raid/Raider.java +++ b/src/main/java/net/minecraft/world/entity/raid/Raider.java @@ -319,7 +319,7 @@ public abstract class Raider extends PatrollingMonster { @@ -322,10 +322,10 @@ index 57fdcdaf54fd1c92a6e51a3a81789029096e5abe..822dd4265ce02252afadbc652064450b if (this.mob.hasActiveRaid() && !this.mob.getCurrentRaid().isOver() && this.mob.canBeLeader() && !ItemStack.matches(this.mob.getItemBySlot(EquipmentSlot.HEAD), Raid.getLeaderBannerInstance())) { diff --git a/src/main/java/net/minecraft/world/level/block/CropBlock.java b/src/main/java/net/minecraft/world/level/block/CropBlock.java -index decb8caa67bc5f4525e4d92fedf465a17171fceb..5ba5a510b30917235e135ccda1b7c98cb7dd93ec 100644 +index 6365ddea0c23bc5d4009d98915f2b39aed2a0328..c7ba8503b2722e5d9ce0699b959cd6be01128055 100644 --- a/src/main/java/net/minecraft/world/level/block/CropBlock.java +++ b/src/main/java/net/minecraft/world/level/block/CropBlock.java -@@ -168,7 +168,7 @@ public class CropBlock extends BushBlock implements BonemealableBlock { +@@ -172,7 +172,7 @@ public class CropBlock extends BushBlock implements BonemealableBlock { @Override public void entityInside(BlockState state, Level world, BlockPos pos, Entity entity) { if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(world, pos)).callEvent()) { return; } // Paper @@ -348,10 +348,10 @@ index 7efae60a9a9269703a1fa7cd280b5b96557ec73e..e7b5f54d2fc53878e9466ccca972df21 org.bukkit.event.Cancellable cancellable; if (entity instanceof Player) { diff --git a/src/main/java/net/minecraft/world/level/block/PowderSnowBlock.java b/src/main/java/net/minecraft/world/level/block/PowderSnowBlock.java -index 7e04ecba2a14be0f0d47c917368abd2a2bd64a05..5c944e39e611201c6ae4dad14511a54c451204f6 100644 +index e6fcea4482d5d87ed78beefad4c57bc86089460f..1626eb90a6b348ad9735b82452f52d4560075a03 100644 --- a/src/main/java/net/minecraft/world/level/block/PowderSnowBlock.java +++ b/src/main/java/net/minecraft/world/level/block/PowderSnowBlock.java -@@ -72,7 +72,7 @@ public class PowderSnowBlock extends Block implements BucketPickup { +@@ -73,7 +73,7 @@ public class PowderSnowBlock extends Block implements BucketPickup { if (!world.isClientSide) { // CraftBukkit start if (entity.isOnFire() && entity.mayInteract(world, pos)) { @@ -361,10 +361,10 @@ index 7e04ecba2a14be0f0d47c917368abd2a2bd64a05..5c944e39e611201c6ae4dad14511a54c } // CraftBukkit end diff --git a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java -index e53294e9c4bb3e832acbdc82bebc0df94523c7e4..86360fad47e4cda64b02ce4c8c0227649ed69a5d 100644 +index 18feb559f9fd157dd4a01faf2b2bb18df2a64675..9c834e3deed07eb70e6a57df2db732c1e2334737 100644 --- a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java +++ b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java -@@ -211,7 +211,7 @@ public class TurtleEggBlock extends Block { +@@ -213,7 +213,7 @@ public class TurtleEggBlock extends Block { } if (entity instanceof Player) return true; @@ -374,7 +374,7 @@ index e53294e9c4bb3e832acbdc82bebc0df94523c7e4..86360fad47e4cda64b02ce4c8c022764 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2606c631d93c8e7b99b0ac1fffffa6b0ce388679..ce4855a70ad684c33420bf84c701fb46ad46e021 100644 +index be24ad68043d014d23879dfe4730c582a7b81689..499595ee7ab97559f562ecfbf4479a6b75506d9d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -115,8 +115,11 @@ public class PurpurWorldConfig { @@ -401,7 +401,7 @@ index 2606c631d93c8e7b99b0ac1fffffa6b0ce388679..ce4855a70ad684c33420bf84c701fb46 tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight); voidDamageHeight = getDouble("gameplay-mechanics.void-damage-height", voidDamageHeight); voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); -@@ -448,9 +454,11 @@ public class PurpurWorldConfig { +@@ -444,9 +450,11 @@ public class PurpurWorldConfig { dispenserPlaceAnvils = getBoolean("blocks.dispenser.place-anvils", dispenserPlaceAnvils); } @@ -413,7 +413,7 @@ index 2606c631d93c8e7b99b0ac1fffffa6b0ce388679..ce4855a70ad684c33420bf84c701fb46 farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); farmlandAlpha = getBoolean("blocks.farmland.use-alpha-farmland", farmlandAlpha); } -@@ -475,6 +483,11 @@ public class PurpurWorldConfig { +@@ -471,6 +479,11 @@ public class PurpurWorldConfig { lavaSpeedNotNether = getInt("blocks.lava.speed.not-nether", lavaSpeedNotNether); } @@ -425,7 +425,7 @@ index 2606c631d93c8e7b99b0ac1fffffa6b0ce388679..ce4855a70ad684c33420bf84c701fb46 public boolean respawnAnchorExplode = true; public double respawnAnchorExplosionPower = 5.0D; public boolean respawnAnchorExplosionFire = true; -@@ -504,10 +517,12 @@ public class PurpurWorldConfig { +@@ -500,10 +513,12 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromExpOrbs = true; public boolean turtleEggsBreakFromItems = true; public boolean turtleEggsBreakFromMinecarts = true; @@ -438,7 +438,7 @@ index 2606c631d93c8e7b99b0ac1fffffa6b0ce388679..ce4855a70ad684c33420bf84c701fb46 } public int waterInfiniteRequiredSources = 2; -@@ -741,6 +756,7 @@ public class PurpurWorldConfig { +@@ -737,6 +752,7 @@ public class PurpurWorldConfig { public double creeperMaxHealth = 20.0D; public double creeperChargedChance = 0.0D; public boolean creeperAllowGriefing = true; @@ -446,7 +446,7 @@ index 2606c631d93c8e7b99b0ac1fffffa6b0ce388679..ce4855a70ad684c33420bf84c701fb46 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -753,6 +769,7 @@ public class PurpurWorldConfig { +@@ -749,6 +765,7 @@ public class PurpurWorldConfig { creeperMaxHealth = getDouble("mobs.creeper.attributes.max_health", creeperMaxHealth); creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance); creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing); @@ -454,7 +454,7 @@ index 2606c631d93c8e7b99b0ac1fffffa6b0ce388679..ce4855a70ad684c33420bf84c701fb46 } public boolean dolphinRidable = false; -@@ -847,6 +864,7 @@ public class PurpurWorldConfig { +@@ -843,6 +860,7 @@ public class PurpurWorldConfig { public double enderDragonMaxY = 320D; public double enderDragonMaxHealth = 200.0D; public boolean enderDragonAlwaysDropsFullExp = false; @@ -462,7 +462,7 @@ index 2606c631d93c8e7b99b0ac1fffffa6b0ce388679..ce4855a70ad684c33420bf84c701fb46 private void enderDragonSettings() { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); -@@ -863,6 +881,7 @@ public class PurpurWorldConfig { +@@ -859,6 +877,7 @@ public class PurpurWorldConfig { } enderDragonMaxHealth = getDouble("mobs.ender_dragon.attributes.max_health", enderDragonMaxHealth); enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp); @@ -470,7 +470,7 @@ index 2606c631d93c8e7b99b0ac1fffffa6b0ce388679..ce4855a70ad684c33420bf84c701fb46 } public boolean endermanRidable = false; -@@ -871,6 +890,7 @@ public class PurpurWorldConfig { +@@ -867,6 +886,7 @@ public class PurpurWorldConfig { public double endermanMaxHealth = 40.0D; public boolean endermanAllowGriefing = true; public boolean endermanDespawnEvenWithBlock = false; @@ -478,7 +478,7 @@ index 2606c631d93c8e7b99b0ac1fffffa6b0ce388679..ce4855a70ad684c33420bf84c701fb46 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -883,6 +903,7 @@ public class PurpurWorldConfig { +@@ -879,6 +899,7 @@ public class PurpurWorldConfig { endermanMaxHealth = getDouble("mobs.enderman.attributes.max_health", endermanMaxHealth); endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing); endermanDespawnEvenWithBlock = getBoolean("mobs.enderman.can-despawn-with-held-block", endermanDespawnEvenWithBlock); @@ -486,7 +486,7 @@ index 2606c631d93c8e7b99b0ac1fffffa6b0ce388679..ce4855a70ad684c33420bf84c701fb46 } public boolean endermiteRidable = false; -@@ -905,6 +926,7 @@ public class PurpurWorldConfig { +@@ -901,6 +922,7 @@ public class PurpurWorldConfig { public boolean evokerRidableInWater = true; public boolean evokerControllable = true; public double evokerMaxHealth = 24.0D; @@ -494,7 +494,7 @@ index 2606c631d93c8e7b99b0ac1fffffa6b0ce388679..ce4855a70ad684c33420bf84c701fb46 private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -915,6 +937,7 @@ public class PurpurWorldConfig { +@@ -911,6 +933,7 @@ public class PurpurWorldConfig { set("mobs.evoker.attributes.max_health", oldValue); } evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth); @@ -502,7 +502,7 @@ index 2606c631d93c8e7b99b0ac1fffffa6b0ce388679..ce4855a70ad684c33420bf84c701fb46 } public boolean foxRidable = false; -@@ -923,6 +946,7 @@ public class PurpurWorldConfig { +@@ -919,6 +942,7 @@ public class PurpurWorldConfig { public double foxMaxHealth = 10.0D; public boolean foxTypeChangesWithTulips = false; public int foxBreedingTicks = 6000; @@ -510,7 +510,7 @@ index 2606c631d93c8e7b99b0ac1fffffa6b0ce388679..ce4855a70ad684c33420bf84c701fb46 private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -935,6 +959,7 @@ public class PurpurWorldConfig { +@@ -931,6 +955,7 @@ public class PurpurWorldConfig { foxMaxHealth = getDouble("mobs.fox.attributes.max_health", foxMaxHealth); foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips); foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks); @@ -518,7 +518,7 @@ index 2606c631d93c8e7b99b0ac1fffffa6b0ce388679..ce4855a70ad684c33420bf84c701fb46 } public boolean frogRidable = false; -@@ -1382,6 +1407,7 @@ public class PurpurWorldConfig { +@@ -1378,6 +1403,7 @@ public class PurpurWorldConfig { public boolean piglinRidableInWater = true; public boolean piglinControllable = true; public double piglinMaxHealth = 16.0D; @@ -526,7 +526,7 @@ index 2606c631d93c8e7b99b0ac1fffffa6b0ce388679..ce4855a70ad684c33420bf84c701fb46 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1392,6 +1418,7 @@ public class PurpurWorldConfig { +@@ -1388,6 +1414,7 @@ public class PurpurWorldConfig { set("mobs.piglin.attributes.max_health", oldValue); } piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth); @@ -534,7 +534,7 @@ index 2606c631d93c8e7b99b0ac1fffffa6b0ce388679..ce4855a70ad684c33420bf84c701fb46 } public boolean piglinBruteRidable = false; -@@ -1414,6 +1441,7 @@ public class PurpurWorldConfig { +@@ -1410,6 +1437,7 @@ public class PurpurWorldConfig { public boolean pillagerRidableInWater = true; public boolean pillagerControllable = true; public double pillagerMaxHealth = 24.0D; @@ -542,7 +542,7 @@ index 2606c631d93c8e7b99b0ac1fffffa6b0ce388679..ce4855a70ad684c33420bf84c701fb46 private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -1424,6 +1452,7 @@ public class PurpurWorldConfig { +@@ -1420,6 +1448,7 @@ public class PurpurWorldConfig { set("mobs.pillager.attributes.max_health", oldValue); } pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); @@ -550,7 +550,7 @@ index 2606c631d93c8e7b99b0ac1fffffa6b0ce388679..ce4855a70ad684c33420bf84c701fb46 } public boolean polarBearRidable = false; -@@ -1470,6 +1499,7 @@ public class PurpurWorldConfig { +@@ -1466,6 +1495,7 @@ public class PurpurWorldConfig { public double rabbitNaturalToast = 0.0D; public double rabbitNaturalKiller = 0.0D; public int rabbitBreedingTicks = 6000; @@ -558,7 +558,7 @@ index 2606c631d93c8e7b99b0ac1fffffa6b0ce388679..ce4855a70ad684c33420bf84c701fb46 private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1483,12 +1513,14 @@ public class PurpurWorldConfig { +@@ -1479,12 +1509,14 @@ public class PurpurWorldConfig { rabbitNaturalToast = getDouble("mobs.rabbit.spawn-toast-chance", rabbitNaturalToast); rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller); rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks); @@ -573,7 +573,7 @@ index 2606c631d93c8e7b99b0ac1fffffa6b0ce388679..ce4855a70ad684c33420bf84c701fb46 private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1499,6 +1531,7 @@ public class PurpurWorldConfig { +@@ -1495,6 +1527,7 @@ public class PurpurWorldConfig { set("mobs.ravager.attributes.max_health", oldValue); } ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth); @@ -581,7 +581,7 @@ index 2606c631d93c8e7b99b0ac1fffffa6b0ce388679..ce4855a70ad684c33420bf84c701fb46 } public boolean salmonRidable = false; -@@ -1520,6 +1553,7 @@ public class PurpurWorldConfig { +@@ -1516,6 +1549,7 @@ public class PurpurWorldConfig { public boolean sheepControllable = true; public double sheepMaxHealth = 8.0D; public int sheepBreedingTicks = 6000; @@ -589,7 +589,7 @@ index 2606c631d93c8e7b99b0ac1fffffa6b0ce388679..ce4855a70ad684c33420bf84c701fb46 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1531,6 +1565,7 @@ public class PurpurWorldConfig { +@@ -1527,6 +1561,7 @@ public class PurpurWorldConfig { } sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); @@ -597,7 +597,7 @@ index 2606c631d93c8e7b99b0ac1fffffa6b0ce388679..ce4855a70ad684c33420bf84c701fb46 } public boolean shulkerRidable = false; -@@ -1553,6 +1588,7 @@ public class PurpurWorldConfig { +@@ -1549,6 +1584,7 @@ public class PurpurWorldConfig { public boolean silverfishRidableInWater = true; public boolean silverfishControllable = true; public double silverfishMaxHealth = 8.0D; @@ -605,7 +605,7 @@ index 2606c631d93c8e7b99b0ac1fffffa6b0ce388679..ce4855a70ad684c33420bf84c701fb46 private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -1563,6 +1599,7 @@ public class PurpurWorldConfig { +@@ -1559,6 +1595,7 @@ public class PurpurWorldConfig { set("mobs.silverfish.attributes.max_health", oldValue); } silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max_health", silverfishMaxHealth); @@ -613,7 +613,7 @@ index 2606c631d93c8e7b99b0ac1fffffa6b0ce388679..ce4855a70ad684c33420bf84c701fb46 } public boolean skeletonRidable = false; -@@ -1639,6 +1676,7 @@ public class PurpurWorldConfig { +@@ -1635,6 +1672,7 @@ public class PurpurWorldConfig { public int snowGolemSnowBallMax = 20; public float snowGolemSnowBallModifier = 10.0F; public double snowGolemAttackDistance = 1.25D; @@ -621,7 +621,7 @@ index 2606c631d93c8e7b99b0ac1fffffa6b0ce388679..ce4855a70ad684c33420bf84c701fb46 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1656,6 +1694,7 @@ public class PurpurWorldConfig { +@@ -1652,6 +1690,7 @@ public class PurpurWorldConfig { snowGolemSnowBallMax = getInt("mobs.snow_golem.max-shoot-interval-ticks", snowGolemSnowBallMax); snowGolemSnowBallModifier = (float) getDouble("mobs.snow_golem.snow-ball-modifier", snowGolemSnowBallModifier); snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance); @@ -629,7 +629,7 @@ index 2606c631d93c8e7b99b0ac1fffffa6b0ce388679..ce4855a70ad684c33420bf84c701fb46 } public boolean snifferRidable = false; -@@ -1842,6 +1881,7 @@ public class PurpurWorldConfig { +@@ -1838,6 +1877,7 @@ public class PurpurWorldConfig { public int villagerBreedingTicks = 6000; public boolean villagerClericsFarmWarts = false; public boolean villagerClericFarmersThrowWarts = true; @@ -637,7 +637,7 @@ index 2606c631d93c8e7b99b0ac1fffffa6b0ce388679..ce4855a70ad684c33420bf84c701fb46 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1858,6 +1898,7 @@ public class PurpurWorldConfig { +@@ -1854,6 +1894,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 2606c631d93c8e7b99b0ac1fffffa6b0ce388679..ce4855a70ad684c33420bf84c701fb46 } public boolean vindicatorRidable = false; -@@ -1930,6 +1971,7 @@ public class PurpurWorldConfig { +@@ -1926,6 +1967,7 @@ public class PurpurWorldConfig { public double witherMaxHealth = 300.0D; public float witherHealthRegenAmount = 1.0f; public int witherHealthRegenDelay = 20; @@ -653,7 +653,7 @@ index 2606c631d93c8e7b99b0ac1fffffa6b0ce388679..ce4855a70ad684c33420bf84c701fb46 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -1947,6 +1989,7 @@ public class PurpurWorldConfig { +@@ -1943,6 +1985,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 2606c631d93c8e7b99b0ac1fffffa6b0ce388679..ce4855a70ad684c33420bf84c701fb46 } public boolean witherSkeletonRidable = false; -@@ -2018,6 +2061,7 @@ public class PurpurWorldConfig { +@@ -2014,6 +2057,7 @@ public class PurpurWorldConfig { public double zombieJockeyChance = 0.05D; public boolean zombieJockeyTryExistingChickens = true; public boolean zombieAggressiveTowardsVillagerWhenLagging = true; @@ -669,7 +669,7 @@ index 2606c631d93c8e7b99b0ac1fffffa6b0ce388679..ce4855a70ad684c33420bf84c701fb46 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2033,6 +2077,7 @@ public class PurpurWorldConfig { +@@ -2029,6 +2073,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/unapplied/server/0124-Config-to-allow-Note-Block-sounds-when-blocked.patch b/patches/server/0121-Config-to-allow-Note-Block-sounds-when-blocked.patch similarity index 97% rename from patches/unapplied/server/0124-Config-to-allow-Note-Block-sounds-when-blocked.patch rename to patches/server/0121-Config-to-allow-Note-Block-sounds-when-blocked.patch index 5ef3744f3..7d3285485 100644 --- a/patches/unapplied/server/0124-Config-to-allow-Note-Block-sounds-when-blocked.patch +++ b/patches/server/0121-Config-to-allow-Note-Block-sounds-when-blocked.patch @@ -22,7 +22,7 @@ index e46d84750bdd7c940f400efda226e12a3fdc3848..6343cd0c33cafb30225cfae17ea1cf15 // org.bukkit.event.block.NotePlayEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callNotePlayEvent(world, pos, state.getValue(NoteBlock.INSTRUMENT), state.getValue(NoteBlock.NOTE)); // if (event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ce4855a70ad684c33420bf84c701fb46ad46e021..028b6aa20c2d83d8a4eb7dabccc4f2451723000e 100644 +index 499595ee7ab97559f562ecfbf4479a6b75506d9d..8c624ac93c3a24bb472217ae89dc8c9c82192407 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -118,6 +118,7 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/server/0125-Add-EntityTeleportHinderedEvent.patch b/patches/server/0122-Add-EntityTeleportHinderedEvent.patch similarity index 95% rename from patches/unapplied/server/0125-Add-EntityTeleportHinderedEvent.patch rename to patches/server/0122-Add-EntityTeleportHinderedEvent.patch index 73ec2dd3d..861ad12d4 100644 --- a/patches/unapplied/server/0125-Add-EntityTeleportHinderedEvent.patch +++ b/patches/server/0122-Add-EntityTeleportHinderedEvent.patch @@ -74,10 +74,10 @@ index 9717b37aef9f487502e696c209ae209ab3b8f000..7291e4056b8e46ab59b71818388ac55f blockEntity.teleportCooldown = 100; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 912d9e4b3168cf89bd263ba63e049a791beefc90..283836981f5ed94dfc8999c3c5450213a1f2cfc1 100644 +index 083bc0c2cdab2d1d54e66bb41f12f92fbc176d19..2ed4e15e6fcd0d00556f772f6fa48e5817a2de2d 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -601,6 +601,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -600,6 +600,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { // Paper end if ((!ignorePassengers && this.entity.isVehicle()) || this.entity.isRemoved()) { // Paper - Teleport passenger API @@ -89,10 +89,10 @@ index 912d9e4b3168cf89bd263ba63e049a791beefc90..283836981f5ed94dfc8999c3c5450213 } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index c6ede1fac5c68f2912a9c401765bd10b09afe7f9..5965b4e91e63a3d3b64e5193399ae3b6d774120b 100644 +index b2fa6e8316a13a27a01a42bb8943472ca12d9249..a0523c36af5a2e33f8f46663794a8df68409f80f 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -1355,6 +1355,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1357,6 +1357,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } if (entity.isVehicle() && !ignorePassengers) { // Paper - Teleport API @@ -104,7 +104,7 @@ index c6ede1fac5c68f2912a9c401765bd10b09afe7f9..5965b4e91e63a3d3b64e5193399ae3b6 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 028b6aa20c2d83d8a4eb7dabccc4f2451723000e..f047edb4f52efaaa89463af0c4741b404459f6c4 100644 +index 8c624ac93c3a24bb472217ae89dc8c9c82192407..d430af5942337e7f19a5085dc9124c9266c137c7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -117,6 +117,7 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/server/0126-Farmland-trampling-changes.patch b/patches/server/0123-Farmland-trampling-changes.patch similarity index 95% rename from patches/unapplied/server/0126-Farmland-trampling-changes.patch rename to patches/server/0123-Farmland-trampling-changes.patch index cd4179100..16a6842c8 100644 --- a/patches/unapplied/server/0126-Farmland-trampling-changes.patch +++ b/patches/server/0123-Farmland-trampling-changes.patch @@ -37,10 +37,10 @@ index e7b5f54d2fc53878e9466ccca972df21f10a7d67..56e66fcd840d0d3681ba671d1ffc51b2 if (!CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.DIRT.defaultBlockState())) { return; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f047edb4f52efaaa89463af0c4741b404459f6c4..afd1db5d51690191ad3836dfe8de305b1c1a29f0 100644 +index d430af5942337e7f19a5085dc9124c9266c137c7..a27a2fb4d9643ed0d2cb4bbad8c09052978e123c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -461,10 +461,16 @@ public class PurpurWorldConfig { +@@ -457,10 +457,16 @@ public class PurpurWorldConfig { public boolean farmlandBypassMobGriefing = false; public boolean farmlandGetsMoistFromBelow = false; public boolean farmlandAlpha = false; diff --git a/patches/unapplied/server/0127-Movement-options-for-armor-stands.patch b/patches/server/0124-Movement-options-for-armor-stands.patch similarity index 91% rename from patches/unapplied/server/0127-Movement-options-for-armor-stands.patch rename to patches/server/0124-Movement-options-for-armor-stands.patch index 72a3ff6d2..6cc1d9d91 100644 --- a/patches/unapplied/server/0127-Movement-options-for-armor-stands.patch +++ b/patches/server/0124-Movement-options-for-armor-stands.patch @@ -17,10 +17,10 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 105b093cd0353a45197615e9fcdf06e72a0aad00..e45f4570ef8334f319dcee39e2f343b91da62fce 100644 +index 7a7f6368eae5cdad69d2ad4e2b8bcc547fb3853c..98aabe27bdac88cd7a533e0bb4dcf3f70d49e738 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -1876,7 +1876,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -1825,7 +1825,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { return this.isInWater() || flag; } @@ -30,7 +30,7 @@ index 105b093cd0353a45197615e9fcdf06e72a0aad00..e45f4570ef8334f319dcee39e2f343b9 if (entity instanceof Boat) { diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java -index 76222084727c269d376d0df5702204c0bdf59d81..b48a3d318a14889c68a1de5c1997b1090aab4029 100644 +index 111b8ffab08b7a3b20cee2533586c19cf89518d7..5a50423c64e2b9d0a213e769dafd8930cfacbf66 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java +++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java @@ -99,10 +99,12 @@ public class ArmorStand extends LivingEntity { @@ -46,7 +46,7 @@ index 76222084727c269d376d0df5702204c0bdf59d81..b48a3d318a14889c68a1de5c1997b109 this.handItems = NonNullList.withSize(2, ItemStack.EMPTY); this.armorItems = NonNullList.withSize(4, ItemStack.EMPTY); this.headPose = ArmorStand.DEFAULT_HEAD_POSE; -@@ -1017,4 +1019,18 @@ public class ArmorStand extends LivingEntity { +@@ -1025,4 +1027,18 @@ public class ArmorStand extends LivingEntity { } // Paper end // Paper end @@ -66,7 +66,7 @@ index 76222084727c269d376d0df5702204c0bdf59d81..b48a3d318a14889c68a1de5c1997b109 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index afd1db5d51690191ad3836dfe8de305b1c1a29f0..14e708b579fc8cbb648fc01d96439a05a6abe239 100644 +index a27a2fb4d9643ed0d2cb4bbad8c09052978e123c..4352f37b8568c7e9ce8cce66c2a1b36d6d9f8520 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -99,10 +99,16 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/server/0128-Fix-stuck-in-portals.patch b/patches/server/0125-Fix-stuck-in-portals.patch similarity index 85% rename from patches/unapplied/server/0128-Fix-stuck-in-portals.patch rename to patches/server/0125-Fix-stuck-in-portals.patch index b8817852b..f3ebd9e86 100644 --- a/patches/unapplied/server/0128-Fix-stuck-in-portals.patch +++ b/patches/server/0125-Fix-stuck-in-portals.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix stuck in portals diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index de7c199c0df87a1c1a0157328fa52351f74a0d3d..540c7b650deefa4a1a0e4f86650d9f3c56091566 100644 +index 51bad65820a89ddd5f5266ce855da2dd788d559d..6d1bb046bad2a3d28ee64a06f69c3c377109fd10 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1272,6 +1272,7 @@ public class ServerPlayer extends Player { +@@ -1266,6 +1266,7 @@ public class ServerPlayer extends Player { playerlist.sendPlayerPermissionLevel(this); worldserver1.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION); this.unsetRemoved(); @@ -17,10 +17,10 @@ index de7c199c0df87a1c1a0157328fa52351f74a0d3d..540c7b650deefa4a1a0e4f86650d9f3c // CraftBukkit end this.setServerLevel(worldserver); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index e45f4570ef8334f319dcee39e2f343b91da62fce..36e9b635f81f2799cd210075bced9e976a90a351 100644 +index 98aabe27bdac88cd7a533e0bb4dcf3f70d49e738..f30846c16cad822a08093572dc429b13d32b9e41 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3060,12 +3060,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3072,12 +3072,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { return Vec3.directionFromRotation(this.getRotationVector()); } @@ -37,10 +37,10 @@ index e45f4570ef8334f319dcee39e2f343b91da62fce..36e9b635f81f2799cd210075bced9e97 this.isInsidePortal = true; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 14e708b579fc8cbb648fc01d96439a05a6abe239..c72af60345ac9704118ff9d19295d1a663a1e985 100644 +index 4352f37b8568c7e9ce8cce66c2a1b36d6d9f8520..10c019d14fb20835a01c31dc4546d1c70cde6948 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -335,6 +335,7 @@ public class PurpurWorldConfig { +@@ -333,6 +333,7 @@ public class PurpurWorldConfig { public int playerDeathExpDropMax = 100; public boolean teleportIfOutsideBorder = false; public boolean totemOfUndyingWorksInInventory = false; @@ -48,7 +48,7 @@ index 14e708b579fc8cbb648fc01d96439a05a6abe239..c72af60345ac9704118ff9d19295d1a6 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -352,6 +353,7 @@ public class PurpurWorldConfig { +@@ -348,6 +349,7 @@ public class PurpurWorldConfig { playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax); teleportIfOutsideBorder = getBoolean("gameplay-mechanics.player.teleport-if-outside-border", teleportIfOutsideBorder); totemOfUndyingWorksInInventory = getBoolean("gameplay-mechanics.player.totem-of-undying-works-in-inventory", totemOfUndyingWorksInInventory); diff --git a/patches/unapplied/server/0129-Toggle-for-water-sensitive-mob-damage.patch b/patches/server/0126-Toggle-for-water-sensitive-mob-damage.patch similarity index 88% rename from patches/unapplied/server/0129-Toggle-for-water-sensitive-mob-damage.patch rename to patches/server/0126-Toggle-for-water-sensitive-mob-damage.patch index 771daf822..7b7e394d8 100644 --- a/patches/unapplied/server/0129-Toggle-for-water-sensitive-mob-damage.patch +++ b/patches/server/0126-Toggle-for-water-sensitive-mob-damage.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Toggle for water sensitive mob damage diff --git a/src/main/java/net/minecraft/world/entity/GlowSquid.java b/src/main/java/net/minecraft/world/entity/GlowSquid.java -index b1ba0f24dd6f1ec4c60208564e4eb84bdcd457f4..1a67f46b57e398d23fbc495ee81ae62e0d84d3dc 100644 +index 19f95ddb2fa9dd264947a8b0033dd7437ee66c7f..d04e48d6a0a6dc7825a3e3d4cf854e294a75d19c 100644 --- a/src/main/java/net/minecraft/world/entity/GlowSquid.java +++ b/src/main/java/net/minecraft/world/entity/GlowSquid.java @@ -46,6 +46,11 @@ public class GlowSquid extends Squid { @@ -21,7 +21,7 @@ index b1ba0f24dd6f1ec4c60208564e4eb84bdcd457f4..1a67f46b57e398d23fbc495ee81ae62e protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -index c283900e6c43fda62428a6e6d8b70e512458e779..c3d1d77a5703db4e1e3eb38fdd0b8903f691bf25 100644 +index 41ac8d2cb5424aecb58158122009b5dca9b51b55..91c7295b75cee5b9fc18434b94a67cb8db0151e3 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java @@ -276,6 +276,11 @@ public class Bat extends AmbientCreature { @@ -62,10 +62,10 @@ index fd917f72b4b4d4af1ae36feab38deac2657c95d4..bfafbc90c710514e1a5699f76381f593 public int getRemainingPersistentAngerTime() { return (Integer) this.entityData.get(Bee.DATA_REMAINING_ANGER_TIME); diff --git a/src/main/java/net/minecraft/world/entity/animal/Cat.java b/src/main/java/net/minecraft/world/entity/animal/Cat.java -index 956f125c9ae62537570bb9870be66872f3519f6a..1554e4a0e068e06ec121adf56421f8332132f062 100644 +index fff1da136b618ca8b9256b55996dc1d01dacd7b8..9279eb3c7a8affbecba1a8b27ca0685021676f39 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cat.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java -@@ -132,6 +132,11 @@ public class Cat extends TamableAnimal implements VariantHolder { +@@ -133,6 +133,11 @@ public class Cat extends TamableAnimal implements VariantHolder { return this.level().purpurConfig.catBreedingTicks; } @@ -78,10 +78,10 @@ index 956f125c9ae62537570bb9870be66872f3519f6a..1554e4a0e068e06ec121adf56421f833 return this.getVariant().texture(); } 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 86b910cbb8d0e19dc9ae53078e730495bf4a3b87..6fe3e62ba4534e821937baa14d728186f8c6439e 100644 +index b142e5c489e9fe65b7258f541ef121b2cd020886..2dc2486e2b5e046ab8f23976b7bf0202f61756ec 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Chicken.java +++ b/src/main/java/net/minecraft/world/entity/animal/Chicken.java -@@ -84,6 +84,11 @@ public class Chicken extends Animal { +@@ -85,6 +85,11 @@ public class Chicken extends Animal { return this.level().purpurConfig.chickenBreedingTicks; } @@ -110,10 +110,10 @@ index 3d61c2d5da103de68242c16d85c703813979d179..2343325fa9a771de7b9445cda24a2bcd public ItemStack getBucketItemStack() { return new ItemStack(Items.COD_BUCKET); 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 f9cce30eef4a5bffeb27c48a6c7ee361803560c5..8d714c029cf3b62af1ff8140a82ed3ae463e0e18 100644 +index c501704251e5b23f697efc307ebdc906cd2e5acd..f76b0d92150fd985a8fc699f6f884527d589dfd3 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java -@@ -71,6 +71,11 @@ public class Cow extends Animal { +@@ -74,6 +74,11 @@ public class Cow extends Animal { return this.level().purpurConfig.cowBreedingTicks; } @@ -142,10 +142,10 @@ index 079fd78528377ee4236fb2e7189a5f0fc5ec4fb3..77746eeffdc612793a6c907f222753bc @Override public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData, @Nullable CompoundTag entityNbt) { 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 2a6f6753ce9b7ab899256edc181a92c19021822b..ed7d057bc12ca0e3d808320a008c902ebb27e1ca 100644 +index 948760c9ee6ba921a7f1b4200fc77aa13f198984..7bd1177b58bd5ecc5659266eece39a49ec08ffa9 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java -@@ -191,6 +191,11 @@ public class Fox extends Animal implements VariantHolder { +@@ -193,6 +193,11 @@ public class Fox extends Animal implements VariantHolder { return this.level().purpurConfig.foxBreedingTicks; } @@ -174,7 +174,7 @@ index 95ff109511c97d603aeaf9e73c49397a841fcbce..58539d29b8e2a8c0676cc574f64e7d61 protected void registerGoals() { if (level().purpurConfig.ironGolemCanSwim) this.goalSelector.addGoal(0, new net.minecraft.world.entity.ai.goal.FloatGoal(this)); // Purpur diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index 7fd50f60aab2fa49a8227f313352a2ee251904c8..56fb35206af7e04a78eba489d444135176188a20 100644 +index cdf2bd4b2aa43b1d45fb0f0e8c4a14057ca39525..6b635c997a8052f6ea9b6dc39bef70000edbd782 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java @@ -90,6 +90,11 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder { +@@ -148,6 +148,11 @@ public class Rabbit extends Animal implements VariantHolder { public int getPurpurBreedTime() { return this.level().purpurConfig.rabbitBreedingTicks; } @@ -318,10 +318,10 @@ index 742805994f29a18af444912b10af631d2c60cacf..e101c3bf425902908c43ffa18867fb83 public int getMaxSchoolSize() { return 5; diff --git a/src/main/java/net/minecraft/world/entity/animal/Sheep.java b/src/main/java/net/minecraft/world/entity/animal/Sheep.java -index c3b79c109e895cb4460571c8816b210455126f1d..35decea07efa8ca9f7ed896be9b8f3eb5afbf082 100644 +index 284c9780e18f51b6ebd32b7eb7a9d3e47b4d0288..6e951928482fb6d662f2b7aa37ebe7a0885b47de 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Sheep.java +++ b/src/main/java/net/minecraft/world/entity/animal/Sheep.java -@@ -144,6 +144,11 @@ public class Sheep extends Animal implements Shearable { +@@ -146,6 +146,11 @@ public class Sheep extends Animal implements Shearable { return this.level().purpurConfig.sheepBreedingTicks; } @@ -379,10 +379,10 @@ index 7d02e552a27632939bb9c40a62f4e0df7bd60bbc..b16d075581a352714f86f1b87805f24c return "entity.minecraft.tropical_fish.predefined." + variant; } diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -index 4a5cc7eaac2bc093a0f5a457b93b6f4560d739ca..df9a7975959393ab2e81fa7c3878afd034ef7f90 100644 +index 6ff7d09066e3f175c3b9404febac9ef9940dc8d5..01375aede431c5023dd4a2d6667948c7bd056efe 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -@@ -110,6 +110,11 @@ public class Turtle extends Animal { +@@ -113,6 +113,11 @@ public class Turtle extends Animal { return this.level().purpurConfig.turtleBreedingTicks; } @@ -395,10 +395,10 @@ index 4a5cc7eaac2bc093a0f5a457b93b6f4560d739ca..df9a7975959393ab2e81fa7c3878afd0 this.entityData.set(Turtle.HOME_POS, pos.immutable()); // Paper - called with mutablepos... } 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 8d71d0ad4bf8e0df8ded9ebce6f39e66dd632bb5..f3c3db958c359b3b032bd54c7732f16fce108ec3 100644 +index bbecb3894d0f4a24442e8833f4d828e6173287da..f79dff635b09300f8d2cff0562f71587496ed33d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -@@ -210,6 +210,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -212,6 +212,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { super.tame(player); } @@ -411,7 +411,7 @@ index 8d71d0ad4bf8e0df8ded9ebce6f39e66dd632bb5..f3c3db958c359b3b032bd54c7732f16f protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index acf44bf3d22d7b2ac7a02b3167cf577403942908..6aaf20501558f1710be0adca9c14441448698541 100644 +index 9faac858cc33895e6e7458b0deb72f225b158246..3ada2ed68d66253d38641fd23b455484bae02684 100644 --- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java @@ -125,6 +125,11 @@ public class Axolotl extends Animal implements LerpingModel, VariantHolder getModelRotationValues() { return this.modelRotationValues; 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 d7580f06f2f619cb283faa61bdd4e7cc127fc08b..83a3a87caba237b382e4409339e98b6b99a005b7 100644 +index 09489e5e736eb296d0361fd4ea4530e4869864b3..bcba99876662e2e96a107d84da02c2366ed338e2 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 -@@ -112,6 +112,11 @@ public class Goat extends Animal { +@@ -114,6 +114,11 @@ public class Goat extends Animal { return this.level().purpurConfig.goatBreedingTicks; } @@ -475,10 +475,10 @@ index 0251ded48eb5bdf96f0e67f6456aa15909c8a4ff..f8dbea402f723bf38d7ab3f2468d1b02 protected void randomizeAttributes(RandomSource random) { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue((double)generateMaxHealth(random::nextInt)); 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 ad9d061979f5856cba9769b91357b3c75cd9a794..b7450d182ecf10ef17ac9eb3fce04e4334013c91 100644 +index 1c0d0f14659e0a64e6b3b3998f59f90cd5b59726..d0717a81ae7b3c55fb47917508b456408484658b 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 -@@ -143,6 +143,11 @@ public class Llama extends AbstractChestedHorse implements VariantHolder type, Level world) { super(type, world); this.setMaxUpStep(1.0F); @@ -685,7 +685,7 @@ index 65a6073a976ce0924ce3a9c7a34253b7e5a9fcec..d4d4ad5dfa776a39eabb840ed5b49acb } // Purpur start -@@ -306,7 +306,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -313,7 +313,7 @@ public class EnderMan extends Monster implements NeutralMob { @Override public boolean isSensitiveToWater() { @@ -695,10 +695,10 @@ index 65a6073a976ce0924ce3a9c7a34253b7e5a9fcec..d4d4ad5dfa776a39eabb840ed5b49acb @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Endermite.java b/src/main/java/net/minecraft/world/entity/monster/Endermite.java -index 21b02eaf6018aeab7da57b5274881e8f9ca49998..cb0a2d522176a2d1d9785f95d205d4d924912a32 100644 +index 336a22876bcf1cdfcd9d17d22f615d45c2863589..936add0eb7204af7dc507c786cb82e0d7a76d5dc 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Endermite.java +++ b/src/main/java/net/minecraft/world/entity/monster/Endermite.java -@@ -59,6 +59,11 @@ public class Endermite extends Monster { +@@ -60,6 +60,11 @@ public class Endermite extends Monster { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.endermiteMaxHealth); } @@ -711,10 +711,10 @@ index 21b02eaf6018aeab7da57b5274881e8f9ca49998..cb0a2d522176a2d1d9785f95d205d4d9 protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Evoker.java b/src/main/java/net/minecraft/world/entity/monster/Evoker.java -index ea2a2c56f94d03b73a5e3a06f91aee7fcb0867f4..fbc098c741d6153e8613dc47cc89c88c62174233 100644 +index fbcb6b4cf4234d6eba989210012ab360c1b323a4..1ef547285cfb8e74404e4108a1403c8fda43cb1f 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Evoker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Evoker.java -@@ -70,6 +70,11 @@ public class Evoker extends SpellcasterIllager { +@@ -72,6 +72,11 @@ public class Evoker extends SpellcasterIllager { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.evokerMaxHealth); } @@ -727,10 +727,10 @@ index ea2a2c56f94d03b73a5e3a06f91aee7fcb0867f4..fbc098c741d6153e8613dc47cc89c88c protected void registerGoals() { super.registerGoals(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Ghast.java b/src/main/java/net/minecraft/world/entity/monster/Ghast.java -index 61068ae356a9ffc26c5fabc0b2561fda9540ff94..ab6bfdb50ee1bb13a213a2093287f5c2465b2d1b 100644 +index edd3b7a855165eb090edb9ad95d36cdb649d231e..fa74eb7ee34f3f9b0026778bc0d37e977fc41d70 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Ghast.java +++ b/src/main/java/net/minecraft/world/entity/monster/Ghast.java -@@ -137,6 +137,11 @@ public class Ghast extends FlyingMob implements Enemy { +@@ -138,6 +138,11 @@ public class Ghast extends FlyingMob implements Enemy { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.ghastMaxHealth); } @@ -743,10 +743,10 @@ index 61068ae356a9ffc26c5fabc0b2561fda9540ff94..ab6bfdb50ee1bb13a213a2093287f5c2 protected void defineSynchedData() { super.defineSynchedData(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Giant.java b/src/main/java/net/minecraft/world/entity/monster/Giant.java -index 12e27b36b3f9949eb644175dd346c487277b2d39..6340d8641770110d61dc9337942bc233e6fb49c6 100644 +index d014731fe352246299253bf005e23673abe091bc..ecaccb4697bf2acaa6dc9034486fcf97c184aa71 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Giant.java +++ b/src/main/java/net/minecraft/world/entity/monster/Giant.java -@@ -74,6 +74,11 @@ public class Giant extends Monster { +@@ -75,6 +75,11 @@ public class Giant extends Monster { } } } @@ -759,10 +759,10 @@ index 12e27b36b3f9949eb644175dd346c487277b2d39..6340d8641770110d61dc9337942bc233 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Guardian.java b/src/main/java/net/minecraft/world/entity/monster/Guardian.java -index b3a8e98c6c094654a283387d5bf78fc9db93a85a..41b080c1fd44c93009908fcfd20180e0d11fca8a 100644 +index 74c4bcccb12b25eac50d061edbc2d2cb46ccb8df..93cd1129003b360ca40ad50fe849bd834a5f2a9b 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Guardian.java +++ b/src/main/java/net/minecraft/world/entity/monster/Guardian.java -@@ -98,6 +98,11 @@ public class Guardian extends Monster { +@@ -99,6 +99,11 @@ public class Guardian extends Monster { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.guardianMaxHealth); } @@ -775,10 +775,10 @@ index b3a8e98c6c094654a283387d5bf78fc9db93a85a..41b080c1fd44c93009908fcfd20180e0 protected void registerGoals() { MoveTowardsRestrictionGoal pathfindergoalmovetowardsrestriction = new MoveTowardsRestrictionGoal(this, 1.0D); 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 7e46ebc5c99f018cada50f491200e4fe7b7098d7..31706620960f5f153565f3cf64e32d0f4d10feb8 100644 +index ede13fe38fb97b94180ea8557d8a45d2ae5954d3..b361078339f01881ee6806049ecc2490fd5cf6bf 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Husk.java +++ b/src/main/java/net/minecraft/world/entity/monster/Husk.java -@@ -64,6 +64,11 @@ public class Husk extends Zombie { +@@ -66,6 +66,11 @@ public class Husk extends Zombie { return level().purpurConfig.huskJockeyTryExistingChickens; } @@ -823,10 +823,10 @@ index b472309f97b24f1d7b97d8b6d464c479c2d602d5..e0ebc4c2d8dd718ce78d981a1d099e74 return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, (double)0.2F); } 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 076a881412d40ce6a8f5e5f83f7598bfa08f199c..7c9f6076f68de295e882e69137ac573db8d9698b 100644 +index 0f13a3f38760f1117bd545702db7a5b168d9e273..030b81dd8c52ddb300e73d792f9c4cea4e8a8d46 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -@@ -137,6 +137,11 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -138,6 +138,11 @@ public class Phantom extends FlyingMob implements Enemy { } // Purpur end @@ -855,10 +855,10 @@ index 6a6349c7002439965422aa4979682b4ce6dfba1e..1f64dc8442de75447c17ae4fd5483345 protected void registerGoals() { super.registerGoals(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Ravager.java b/src/main/java/net/minecraft/world/entity/monster/Ravager.java -index ab13d20dda5a8af471fd459950e7c3e2215e59db..d56e80014621dbd7e445f2f753807bd2b751310d 100644 +index 5aa00878c4c7be4a38137a93b1a2cf1c468422ea..0992e3729fdfa945660affb7eb7efcff63f37210 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Ravager.java +++ b/src/main/java/net/minecraft/world/entity/monster/Ravager.java -@@ -96,6 +96,11 @@ public class Ravager extends Raider { +@@ -99,6 +99,11 @@ public class Ravager extends Raider { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.ravagerMaxHealth); } @@ -871,10 +871,10 @@ index ab13d20dda5a8af471fd459950e7c3e2215e59db..d56e80014621dbd7e445f2f753807bd2 protected void registerGoals() { super.registerGoals(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Shulker.java b/src/main/java/net/minecraft/world/entity/monster/Shulker.java -index 7d96ba5adeddf52ed712e320d5f56a37f30e138a..27b05a4657ba201096973640d7a8cbabdd69f053 100644 +index fde2a69f489e12d9c1ccee4522258d2746dcb2e0..69e1f7d1737a8410ff36d4226c15090e72529658 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Shulker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Shulker.java -@@ -120,6 +120,11 @@ public class Shulker extends AbstractGolem implements VariantHolder(this, AbstractPiglin.class, true)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java -index 323ec328226e3a46ef8afeaf07178bb9f4042134..651c4f4b3d9349b8e9d6601a37ca5da192898a61 100644 +index 1d862dd019b2d024f61cfc8956430d18d94b1ebf..8cd6012b00dd5b307fd76ef0fd9c2cd92342a92a 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java -@@ -89,6 +89,11 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { +@@ -91,6 +91,11 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.zoglinMaxHealth); } @@ -1069,10 +1069,10 @@ index 323ec328226e3a46ef8afeaf07178bb9f4042134..651c4f4b3d9349b8e9d6601a37ca5da1 protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); 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 bd75aa78a7dd437d6fce79a6cb18298184affe75..a676d66dcb5ee72e6d8ffef4e210a3d2c8d605f2 100644 +index d9caaa16e4d62bdfbc3106a63c1b4bef06727bad..cb4a50f0259465eff425aac468cb409976b4de13 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -@@ -140,6 +140,11 @@ public class Zombie extends Monster { +@@ -141,6 +141,11 @@ public class Zombie extends Monster { return level().purpurConfig.zombieJockeyTryExistingChickens; } @@ -1085,10 +1085,10 @@ index bd75aa78a7dd437d6fce79a6cb18298184affe75..a676d66dcb5ee72e6d8ffef4e210a3d2 protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur 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 6f3667751e430ff6020a9a26f82a25e4ec043ce6..c3f220a85b91a25662c943b5ee4508cd7a18c75d 100644 +index 01f6b7eb50870f9bcac9bbd3b6a87382d6aa1f1b..5933bff2db353644705f5e1cfec3b0f2dedbad87 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -@@ -106,6 +106,11 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { +@@ -109,6 +109,11 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.SPAWN_REINFORCEMENTS_CHANCE).setBaseValue(this.random.nextDouble() * this.level().purpurConfig.zombieVillagerSpawnReinforcements); } @@ -1101,10 +1101,10 @@ index 6f3667751e430ff6020a9a26f82a25e4ec043ce6..c3f220a85b91a25662c943b5ee4508cd public boolean jockeyOnlyBaby() { return level().purpurConfig.zombieVillagerJockeyOnlyBaby; 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 67fd554cfd6b848ca1f2cf804ad4543ad2c88845..21ba6ea58dfbfd9a7c0bf7d518d7f12730841a08 100644 +index b2d77117309e81db60e7e50911247793fa829755..3574a1e641d8af34a0ff7ea8dcfb08641cf6ace0 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java -@@ -85,6 +85,11 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { +@@ -86,6 +86,11 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.zombifiedPiglinMaxHealth); } @@ -1117,10 +1117,10 @@ index 67fd554cfd6b848ca1f2cf804ad4543ad2c88845..21ba6ea58dfbfd9a7c0bf7d518d7f127 public boolean jockeyOnlyBaby() { return level().purpurConfig.zombifiedPiglinJockeyOnlyBaby; diff --git a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index bd72dc99752faca3180ecb165b11406ada1a564e..1fd65b47b1bd56bc09902324b1dd22dad2e0bc2d 100644 +index 2c3a5b36e8fa1b5cfd5774296d5a9ca0c69b4db7..e60b3ccc703c36ab37e084c21811d43717aaa226 100644 --- a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -@@ -94,6 +94,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -96,6 +96,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { return this.level().purpurConfig.hoglinBreedingTicks; } @@ -1133,7 +1133,7 @@ index bd72dc99752faca3180ecb165b11406ada1a564e..1fd65b47b1bd56bc09902324b1dd22da public boolean canBeLeashed(Player player) { return !this.isLeashed(); diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -index e2e9545a583deb1e2bbdcb76e459d8bd481d5d77..83e9873138fb178511119effbe21449c303a5063 100644 +index f7ea134aa7ea4d783e3bbe53eefd04d62d7e732a..022e58de15a359eb8e91d1d6007b19251b7e1a63 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java @@ -118,6 +118,11 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento @@ -1165,10 +1165,10 @@ index 04e54c241078e6cd6419a21ba1bf913fd3b413d1..b63d87df0f48dd63c89118f91b31dc4e return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 50.0D).add(Attributes.MOVEMENT_SPEED, (double)0.35F).add(Attributes.ATTACK_DAMAGE, 7.0D); } 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 605171aedb4f54dcd16837ad1e36097653a26ab6..01a1732ca13300b60979d250ebf156ca68bb014f 100644 +index b2d3fbe3574069691e6ee3718a095163bac9fc5f..a41dc80579375eb3fd8be9b2169c4affd134f6fa 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -189,6 +189,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -188,6 +188,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler return level().purpurConfig.villagerCanBeLeashed && !this.isLeashed(); } @@ -1181,10 +1181,10 @@ index 605171aedb4f54dcd16837ad1e36097653a26ab6..01a1732ca13300b60979d250ebf156ca public Brain getBrain() { return (Brain) super.getBrain(); // CraftBukkit - decompile error 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 7413f90dfcb68476f7d514607f38a8965dfa6fd0..5c6f1d3ffa2a2b6990d2406b14679e8286f60729 100644 +index 31daa61db84fcb3cde7ec4b18b32aba350ab2cfb..502ff11b909537f98339d3bef49f324e69d2f0fe 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -@@ -93,6 +93,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill +@@ -97,6 +97,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill return level().purpurConfig.wanderingTraderCanBeLeashed && !this.isLeashed(); } @@ -1197,10 +1197,10 @@ index 7413f90dfcb68476f7d514607f38a8965dfa6fd0..5c6f1d3ffa2a2b6990d2406b14679e82 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449fe27960a1 100644 +index 10c019d14fb20835a01c31dc4546d1c70cde6948..8c16a4920f484fb0dfd58daf7d3ec87c1eec6135 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -572,11 +572,13 @@ public class PurpurWorldConfig { +@@ -568,11 +568,13 @@ public class PurpurWorldConfig { public boolean axolotlControllable = true; public double axolotlMaxHealth = 14.0D; public int axolotlBreedingTicks = 6000; @@ -1214,7 +1214,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean batRidable = false; -@@ -591,6 +593,7 @@ public class PurpurWorldConfig { +@@ -587,6 +589,7 @@ public class PurpurWorldConfig { public double batArmor = 0.0D; public double batArmorToughness = 0.0D; public double batAttackKnockback = 0.0D; @@ -1222,7 +1222,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void batSettings() { batRidable = getBoolean("mobs.bat.ridable", batRidable); batRidableInWater = getBoolean("mobs.bat.ridable-in-water", batRidableInWater); -@@ -609,6 +612,7 @@ public class PurpurWorldConfig { +@@ -605,6 +608,7 @@ public class PurpurWorldConfig { batArmor = getDouble("mobs.bat.attributes.armor", batArmor); batArmorToughness = getDouble("mobs.bat.attributes.armor_toughness", batArmorToughness); batAttackKnockback = getDouble("mobs.bat.attributes.attack_knockback", batAttackKnockback); @@ -1230,7 +1230,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean beeRidable = false; -@@ -617,6 +621,7 @@ public class PurpurWorldConfig { +@@ -613,6 +617,7 @@ public class PurpurWorldConfig { public double beeMaxY = 320D; public double beeMaxHealth = 10.0D; public int beeBreedingTicks = 6000; @@ -1238,7 +1238,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -629,6 +634,7 @@ public class PurpurWorldConfig { +@@ -625,6 +630,7 @@ public class PurpurWorldConfig { } beeMaxHealth = getDouble("mobs.bee.attributes.max_health", beeMaxHealth); beeBreedingTicks = getInt("mobs.bee.breeding-delay-ticks", beeBreedingTicks); @@ -1246,7 +1246,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean blazeRidable = false; -@@ -636,6 +642,7 @@ public class PurpurWorldConfig { +@@ -632,6 +638,7 @@ public class PurpurWorldConfig { public boolean blazeControllable = true; public double blazeMaxY = 320D; public double blazeMaxHealth = 20.0D; @@ -1254,7 +1254,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void blazeSettings() { blazeRidable = getBoolean("mobs.blaze.ridable", blazeRidable); blazeRidableInWater = getBoolean("mobs.blaze.ridable-in-water", blazeRidableInWater); -@@ -647,6 +654,7 @@ public class PurpurWorldConfig { +@@ -643,6 +650,7 @@ public class PurpurWorldConfig { set("mobs.blaze.attributes.max_health", oldValue); } blazeMaxHealth = getDouble("mobs.blaze.attributes.max_health", blazeMaxHealth); @@ -1262,7 +1262,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean camelRidableInWater = false; -@@ -677,6 +685,7 @@ public class PurpurWorldConfig { +@@ -673,6 +681,7 @@ public class PurpurWorldConfig { public int catSpawnVillageScanRange = 48; public int catBreedingTicks = 6000; public DyeColor catDefaultCollarColor = DyeColor.RED; @@ -1270,7 +1270,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -696,12 +705,14 @@ public class PurpurWorldConfig { +@@ -692,12 +701,14 @@ public class PurpurWorldConfig { } catch (IllegalArgumentException ignore) { catDefaultCollarColor = DyeColor.RED; } @@ -1285,7 +1285,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void caveSpiderSettings() { caveSpiderRidable = getBoolean("mobs.cave_spider.ridable", caveSpiderRidable); caveSpiderRidableInWater = getBoolean("mobs.cave_spider.ridable-in-water", caveSpiderRidableInWater); -@@ -712,6 +723,7 @@ public class PurpurWorldConfig { +@@ -708,6 +719,7 @@ public class PurpurWorldConfig { set("mobs.cave_spider.attributes.max_health", oldValue); } caveSpiderMaxHealth = getDouble("mobs.cave_spider.attributes.max_health", caveSpiderMaxHealth); @@ -1293,7 +1293,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean chickenRidable = false; -@@ -720,6 +732,7 @@ public class PurpurWorldConfig { +@@ -716,6 +728,7 @@ public class PurpurWorldConfig { public double chickenMaxHealth = 4.0D; public boolean chickenRetaliate = false; public int chickenBreedingTicks = 6000; @@ -1301,7 +1301,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -732,11 +745,13 @@ public class PurpurWorldConfig { +@@ -728,11 +741,13 @@ public class PurpurWorldConfig { chickenMaxHealth = getDouble("mobs.chicken.attributes.max_health", chickenMaxHealth); chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate); chickenBreedingTicks = getInt("mobs.chicken.breeding-delay-ticks", chickenBreedingTicks); @@ -1315,7 +1315,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void codSettings() { codRidable = getBoolean("mobs.cod.ridable", codRidable); codControllable = getBoolean("mobs.cod.controllable", codControllable); -@@ -746,6 +761,7 @@ public class PurpurWorldConfig { +@@ -742,6 +757,7 @@ public class PurpurWorldConfig { set("mobs.cod.attributes.max_health", oldValue); } codMaxHealth = getDouble("mobs.cod.attributes.max_health", codMaxHealth); @@ -1323,7 +1323,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean cowRidable = false; -@@ -754,6 +770,7 @@ public class PurpurWorldConfig { +@@ -750,6 +766,7 @@ public class PurpurWorldConfig { public double cowMaxHealth = 10.0D; public int cowFeedMushrooms = 0; public int cowBreedingTicks = 6000; @@ -1331,7 +1331,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void cowSettings() { cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); -@@ -766,6 +783,7 @@ public class PurpurWorldConfig { +@@ -762,6 +779,7 @@ public class PurpurWorldConfig { cowMaxHealth = getDouble("mobs.cow.attributes.max_health", cowMaxHealth); cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms); cowBreedingTicks = getInt("mobs.cow.breeding-delay-ticks", cowBreedingTicks); @@ -1339,7 +1339,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean creeperRidable = false; -@@ -775,6 +793,7 @@ public class PurpurWorldConfig { +@@ -771,6 +789,7 @@ public class PurpurWorldConfig { public double creeperChargedChance = 0.0D; public boolean creeperAllowGriefing = true; public boolean creeperBypassMobGriefing = false; @@ -1347,7 +1347,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -788,6 +807,7 @@ public class PurpurWorldConfig { +@@ -784,6 +803,7 @@ public class PurpurWorldConfig { creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance); creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing); creeperBypassMobGriefing = getBoolean("mobs.creeper.bypass-mob-griefing", creeperBypassMobGriefing); @@ -1355,7 +1355,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean dolphinRidable = false; -@@ -797,6 +817,7 @@ public class PurpurWorldConfig { +@@ -793,6 +813,7 @@ public class PurpurWorldConfig { public float dolphinSpitDamage = 2.0F; public double dolphinMaxHealth = 10.0D; public boolean dolphinDisableTreasureSearching = false; @@ -1363,7 +1363,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -810,6 +831,7 @@ public class PurpurWorldConfig { +@@ -806,6 +827,7 @@ public class PurpurWorldConfig { } dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth); dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching); @@ -1371,7 +1371,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean donkeyRidableInWater = false; -@@ -820,6 +842,7 @@ public class PurpurWorldConfig { +@@ -816,6 +838,7 @@ public class PurpurWorldConfig { public double donkeyMovementSpeedMin = 0.175D; public double donkeyMovementSpeedMax = 0.175D; public int donkeyBreedingTicks = 6000; @@ -1379,7 +1379,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -836,6 +859,7 @@ public class PurpurWorldConfig { +@@ -832,6 +855,7 @@ public class PurpurWorldConfig { donkeyMovementSpeedMin = getDouble("mobs.donkey.attributes.movement_speed.min", donkeyMovementSpeedMin); donkeyMovementSpeedMax = getDouble("mobs.donkey.attributes.movement_speed.max", donkeyMovementSpeedMax); donkeyBreedingTicks = getInt("mobs.donkey.breeding-delay-ticks", donkeyBreedingTicks); @@ -1387,7 +1387,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean drownedRidable = false; -@@ -846,6 +870,7 @@ public class PurpurWorldConfig { +@@ -842,6 +866,7 @@ public class PurpurWorldConfig { public boolean drownedJockeyOnlyBaby = true; public double drownedJockeyChance = 0.05D; public boolean drownedJockeyTryExistingChickens = true; @@ -1395,7 +1395,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -860,11 +885,13 @@ public class PurpurWorldConfig { +@@ -856,11 +881,13 @@ public class PurpurWorldConfig { drownedJockeyOnlyBaby = getBoolean("mobs.drowned.jockey.only-babies", drownedJockeyOnlyBaby); drownedJockeyChance = getDouble("mobs.drowned.jockey.chance", drownedJockeyChance); drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens); @@ -1409,7 +1409,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void elderGuardianSettings() { elderGuardianRidable = getBoolean("mobs.elder_guardian.ridable", elderGuardianRidable); elderGuardianControllable = getBoolean("mobs.elder_guardian.controllable", elderGuardianControllable); -@@ -874,6 +901,7 @@ public class PurpurWorldConfig { +@@ -870,6 +897,7 @@ public class PurpurWorldConfig { set("mobs.elder_guardian.attributes.max_health", oldValue); } elderGuardianMaxHealth = getDouble("mobs.elder_guardian.attributes.max_health", elderGuardianMaxHealth); @@ -1417,7 +1417,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean enderDragonRidable = false; -@@ -883,6 +911,7 @@ public class PurpurWorldConfig { +@@ -879,6 +907,7 @@ public class PurpurWorldConfig { public double enderDragonMaxHealth = 200.0D; public boolean enderDragonAlwaysDropsFullExp = false; public boolean enderDragonBypassMobGriefing = false; @@ -1425,7 +1425,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void enderDragonSettings() { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); -@@ -900,6 +929,7 @@ public class PurpurWorldConfig { +@@ -896,6 +925,7 @@ public class PurpurWorldConfig { enderDragonMaxHealth = getDouble("mobs.ender_dragon.attributes.max_health", enderDragonMaxHealth); enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp); enderDragonBypassMobGriefing = getBoolean("mobs.ender_dragon.bypass-mob-griefing", enderDragonBypassMobGriefing); @@ -1433,7 +1433,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean endermanRidable = false; -@@ -909,6 +939,7 @@ public class PurpurWorldConfig { +@@ -905,6 +935,7 @@ public class PurpurWorldConfig { public boolean endermanAllowGriefing = true; public boolean endermanDespawnEvenWithBlock = false; public boolean endermanBypassMobGriefing = false; @@ -1441,7 +1441,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -922,12 +953,14 @@ public class PurpurWorldConfig { +@@ -918,12 +949,14 @@ public class PurpurWorldConfig { endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing); endermanDespawnEvenWithBlock = getBoolean("mobs.enderman.can-despawn-with-held-block", endermanDespawnEvenWithBlock); endermanBypassMobGriefing = getBoolean("mobs.enderman.bypass-mob-griefing", endermanBypassMobGriefing); @@ -1456,7 +1456,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void endermiteSettings() { endermiteRidable = getBoolean("mobs.endermite.ridable", endermiteRidable); endermiteRidableInWater = getBoolean("mobs.endermite.ridable-in-water", endermiteRidableInWater); -@@ -938,6 +971,7 @@ public class PurpurWorldConfig { +@@ -934,6 +967,7 @@ public class PurpurWorldConfig { set("mobs.endermite.attributes.max_health", oldValue); } endermiteMaxHealth = getDouble("mobs.endermite.attributes.max_health", endermiteMaxHealth); @@ -1464,7 +1464,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean evokerRidable = false; -@@ -945,6 +979,7 @@ public class PurpurWorldConfig { +@@ -941,6 +975,7 @@ public class PurpurWorldConfig { public boolean evokerControllable = true; public double evokerMaxHealth = 24.0D; public boolean evokerBypassMobGriefing = false; @@ -1472,7 +1472,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -956,6 +991,7 @@ public class PurpurWorldConfig { +@@ -952,6 +987,7 @@ public class PurpurWorldConfig { } evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth); evokerBypassMobGriefing = getBoolean("mobs.evoker.bypass-mob-griefing", evokerBypassMobGriefing); @@ -1480,7 +1480,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean foxRidable = false; -@@ -965,6 +1001,7 @@ public class PurpurWorldConfig { +@@ -961,6 +997,7 @@ public class PurpurWorldConfig { public boolean foxTypeChangesWithTulips = false; public int foxBreedingTicks = 6000; public boolean foxBypassMobGriefing = false; @@ -1488,7 +1488,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -978,6 +1015,7 @@ public class PurpurWorldConfig { +@@ -974,6 +1011,7 @@ public class PurpurWorldConfig { foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips); foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks); foxBypassMobGriefing = getBoolean("mobs.fox.bypass-mob-griefing", foxBypassMobGriefing); @@ -1496,7 +1496,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean frogRidable = false; -@@ -998,6 +1036,7 @@ public class PurpurWorldConfig { +@@ -994,6 +1032,7 @@ public class PurpurWorldConfig { public boolean ghastControllable = true; public double ghastMaxY = 320D; public double ghastMaxHealth = 10.0D; @@ -1504,7 +1504,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void ghastSettings() { ghastRidable = getBoolean("mobs.ghast.ridable", ghastRidable); ghastRidableInWater = getBoolean("mobs.ghast.ridable-in-water", ghastRidableInWater); -@@ -1009,6 +1048,7 @@ public class PurpurWorldConfig { +@@ -1005,6 +1044,7 @@ public class PurpurWorldConfig { set("mobs.ghast.attributes.max_health", oldValue); } ghastMaxHealth = getDouble("mobs.ghast.attributes.max_health", ghastMaxHealth); @@ -1512,7 +1512,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean giantRidable = false; -@@ -1021,6 +1061,7 @@ public class PurpurWorldConfig { +@@ -1017,6 +1057,7 @@ public class PurpurWorldConfig { public float giantJumpHeight = 1.0F; public boolean giantHaveAI = false; public boolean giantHaveHostileAI = false; @@ -1520,7 +1520,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void giantSettings() { giantRidable = getBoolean("mobs.giant.ridable", giantRidable); giantRidableInWater = getBoolean("mobs.giant.ridable-in-water", giantRidableInWater); -@@ -1041,17 +1082,20 @@ public class PurpurWorldConfig { +@@ -1037,17 +1078,20 @@ public class PurpurWorldConfig { giantJumpHeight = (float) getDouble("mobs.giant.jump-height", giantJumpHeight); giantHaveAI = getBoolean("mobs.giant.have-ai", giantHaveAI); giantHaveHostileAI = getBoolean("mobs.giant.have-hostile-ai", giantHaveHostileAI); @@ -1541,7 +1541,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean goatRidable = false; -@@ -1059,17 +1103,20 @@ public class PurpurWorldConfig { +@@ -1055,17 +1099,20 @@ public class PurpurWorldConfig { public boolean goatControllable = true; public double goatMaxHealth = 10.0D; public int goatBreedingTicks = 6000; @@ -1562,7 +1562,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void guardianSettings() { guardianRidable = getBoolean("mobs.guardian.ridable", guardianRidable); guardianControllable = getBoolean("mobs.guardian.controllable", guardianControllable); -@@ -1079,6 +1126,7 @@ public class PurpurWorldConfig { +@@ -1075,6 +1122,7 @@ public class PurpurWorldConfig { set("mobs.guardian.attributes.max_health", oldValue); } guardianMaxHealth = getDouble("mobs.guardian.attributes.max_health", guardianMaxHealth); @@ -1570,7 +1570,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean hoglinRidable = false; -@@ -1086,6 +1134,7 @@ public class PurpurWorldConfig { +@@ -1082,6 +1130,7 @@ public class PurpurWorldConfig { public boolean hoglinControllable = true; public double hoglinMaxHealth = 40.0D; public int hoglinBreedingTicks = 6000; @@ -1578,7 +1578,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -1097,6 +1146,7 @@ public class PurpurWorldConfig { +@@ -1093,6 +1142,7 @@ public class PurpurWorldConfig { } hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth); hoglinBreedingTicks = getInt("mobs.hoglin.breeding-delay-ticks", hoglinBreedingTicks); @@ -1586,7 +1586,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean horseRidableInWater = false; -@@ -1107,6 +1157,7 @@ public class PurpurWorldConfig { +@@ -1103,6 +1153,7 @@ public class PurpurWorldConfig { public double horseMovementSpeedMin = 0.1125D; public double horseMovementSpeedMax = 0.3375D; public int horseBreedingTicks = 6000; @@ -1594,7 +1594,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -1123,6 +1174,7 @@ public class PurpurWorldConfig { +@@ -1119,6 +1170,7 @@ public class PurpurWorldConfig { horseMovementSpeedMin = getDouble("mobs.horse.attributes.movement_speed.min", horseMovementSpeedMin); horseMovementSpeedMax = getDouble("mobs.horse.attributes.movement_speed.max", horseMovementSpeedMax); horseBreedingTicks = getInt("mobs.horse.breeding-delay-ticks", horseBreedingTicks); @@ -1602,7 +1602,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean huskRidable = false; -@@ -1133,6 +1185,7 @@ public class PurpurWorldConfig { +@@ -1129,6 +1181,7 @@ public class PurpurWorldConfig { public boolean huskJockeyOnlyBaby = true; public double huskJockeyChance = 0.05D; public boolean huskJockeyTryExistingChickens = true; @@ -1610,7 +1610,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -1147,6 +1200,7 @@ public class PurpurWorldConfig { +@@ -1143,6 +1196,7 @@ public class PurpurWorldConfig { huskJockeyOnlyBaby = getBoolean("mobs.husk.jockey.only-babies", huskJockeyOnlyBaby); huskJockeyChance = getDouble("mobs.husk.jockey.chance", huskJockeyChance); huskJockeyTryExistingChickens = getBoolean("mobs.husk.jockey.try-existing-chickens", huskJockeyTryExistingChickens); @@ -1618,7 +1618,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean illusionerRidable = false; -@@ -1155,6 +1209,7 @@ public class PurpurWorldConfig { +@@ -1151,6 +1205,7 @@ public class PurpurWorldConfig { public double illusionerMovementSpeed = 0.5D; public double illusionerFollowRange = 18.0D; public double illusionerMaxHealth = 32.0D; @@ -1626,7 +1626,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void illusionerSettings() { illusionerRidable = getBoolean("mobs.illusioner.ridable", illusionerRidable); illusionerRidableInWater = getBoolean("mobs.illusioner.ridable-in-water", illusionerRidableInWater); -@@ -1171,6 +1226,7 @@ public class PurpurWorldConfig { +@@ -1167,6 +1222,7 @@ public class PurpurWorldConfig { set("mobs.illusioner.attributes.max_health", oldValue); } illusionerMaxHealth = getDouble("mobs.illusioner.attributes.max_health", illusionerMaxHealth); @@ -1634,7 +1634,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean ironGolemRidable = false; -@@ -1178,6 +1234,7 @@ public class PurpurWorldConfig { +@@ -1174,6 +1230,7 @@ public class PurpurWorldConfig { public boolean ironGolemControllable = true; public boolean ironGolemCanSwim = false; public double ironGolemMaxHealth = 100.0D; @@ -1642,7 +1642,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1189,6 +1246,7 @@ public class PurpurWorldConfig { +@@ -1185,6 +1242,7 @@ public class PurpurWorldConfig { set("mobs.iron_golem.attributes.max_health", oldValue); } ironGolemMaxHealth = getDouble("mobs.iron_golem.attributes.max_health", ironGolemMaxHealth); @@ -1650,7 +1650,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean llamaRidable = false; -@@ -1201,6 +1259,7 @@ public class PurpurWorldConfig { +@@ -1197,6 +1255,7 @@ public class PurpurWorldConfig { public double llamaMovementSpeedMin = 0.175D; public double llamaMovementSpeedMax = 0.175D; public int llamaBreedingTicks = 6000; @@ -1658,7 +1658,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1219,6 +1278,7 @@ public class PurpurWorldConfig { +@@ -1215,6 +1274,7 @@ public class PurpurWorldConfig { llamaMovementSpeedMin = getDouble("mobs.llama.attributes.movement_speed.min", llamaMovementSpeedMin); llamaMovementSpeedMax = getDouble("mobs.llama.attributes.movement_speed.max", llamaMovementSpeedMax); llamaBreedingTicks = getInt("mobs.llama.breeding-delay-ticks", llamaBreedingTicks); @@ -1666,7 +1666,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean magmaCubeRidable = false; -@@ -1228,6 +1288,7 @@ public class PurpurWorldConfig { +@@ -1224,6 +1284,7 @@ public class PurpurWorldConfig { public String magmaCubeAttackDamage = "size"; public Map magmaCubeMaxHealthCache = new HashMap<>(); public Map magmaCubeAttackDamageCache = new HashMap<>(); @@ -1674,7 +1674,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void magmaCubeSettings() { magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable); magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater); -@@ -1241,6 +1302,7 @@ public class PurpurWorldConfig { +@@ -1237,6 +1298,7 @@ public class PurpurWorldConfig { magmaCubeAttackDamage = getString("mobs.magma_cube.attributes.attack_damage", magmaCubeAttackDamage); magmaCubeMaxHealthCache.clear(); magmaCubeAttackDamageCache.clear(); @@ -1682,7 +1682,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean mooshroomRidable = false; -@@ -1248,6 +1310,7 @@ public class PurpurWorldConfig { +@@ -1244,6 +1306,7 @@ public class PurpurWorldConfig { public boolean mooshroomControllable = true; public double mooshroomMaxHealth = 10.0D; public int mooshroomBreedingTicks = 6000; @@ -1690,7 +1690,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1259,6 +1322,7 @@ public class PurpurWorldConfig { +@@ -1255,6 +1318,7 @@ public class PurpurWorldConfig { } mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth); mooshroomBreedingTicks = getInt("mobs.mooshroom.breeding-delay-ticks", mooshroomBreedingTicks); @@ -1698,7 +1698,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean muleRidableInWater = false; -@@ -1269,6 +1333,7 @@ public class PurpurWorldConfig { +@@ -1265,6 +1329,7 @@ public class PurpurWorldConfig { public double muleMovementSpeedMin = 0.175D; public double muleMovementSpeedMax = 0.175D; public int muleBreedingTicks = 6000; @@ -1706,7 +1706,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1285,6 +1350,7 @@ public class PurpurWorldConfig { +@@ -1281,6 +1346,7 @@ public class PurpurWorldConfig { muleMovementSpeedMin = getDouble("mobs.mule.attributes.movement_speed.min", muleMovementSpeedMin); muleMovementSpeedMax = getDouble("mobs.mule.attributes.movement_speed.max", muleMovementSpeedMax); muleBreedingTicks = getInt("mobs.mule.breeding-delay-ticks", muleBreedingTicks); @@ -1714,7 +1714,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean ocelotRidable = false; -@@ -1292,6 +1358,7 @@ public class PurpurWorldConfig { +@@ -1288,6 +1354,7 @@ public class PurpurWorldConfig { public boolean ocelotControllable = true; public double ocelotMaxHealth = 10.0D; public int ocelotBreedingTicks = 6000; @@ -1722,7 +1722,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1303,6 +1370,7 @@ public class PurpurWorldConfig { +@@ -1299,6 +1366,7 @@ public class PurpurWorldConfig { } ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth); ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); @@ -1730,7 +1730,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean pandaRidable = false; -@@ -1310,6 +1378,7 @@ public class PurpurWorldConfig { +@@ -1306,6 +1374,7 @@ public class PurpurWorldConfig { public boolean pandaControllable = true; public double pandaMaxHealth = 20.0D; public int pandaBreedingTicks = 6000; @@ -1738,7 +1738,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1321,6 +1390,7 @@ public class PurpurWorldConfig { +@@ -1317,6 +1386,7 @@ public class PurpurWorldConfig { } pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth); pandaBreedingTicks = getInt("mobs.panda.breeding-delay-ticks", pandaBreedingTicks); @@ -1746,7 +1746,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean parrotRidable = false; -@@ -1328,6 +1398,7 @@ public class PurpurWorldConfig { +@@ -1324,6 +1394,7 @@ public class PurpurWorldConfig { public boolean parrotControllable = true; public double parrotMaxY = 320D; public double parrotMaxHealth = 6.0D; @@ -1754,7 +1754,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1339,6 +1410,7 @@ public class PurpurWorldConfig { +@@ -1335,6 +1406,7 @@ public class PurpurWorldConfig { set("mobs.parrot.attributes.max_health", oldValue); } parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth); @@ -1762,7 +1762,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean phantomRidable = false; -@@ -1365,6 +1437,7 @@ public class PurpurWorldConfig { +@@ -1361,6 +1433,7 @@ public class PurpurWorldConfig { public boolean phantomIgnorePlayersWithTorch = false; public boolean phantomBurnInDaylight = true; public boolean phantomFlamesOnSwoop = false; @@ -1770,7 +1770,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1399,6 +1472,7 @@ public class PurpurWorldConfig { +@@ -1395,6 +1468,7 @@ public class PurpurWorldConfig { phantomBurnInDaylight = getBoolean("mobs.phantom.burn-in-daylight", phantomBurnInDaylight); phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch); phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop); @@ -1778,7 +1778,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean pigRidable = false; -@@ -1407,6 +1481,7 @@ public class PurpurWorldConfig { +@@ -1403,6 +1477,7 @@ public class PurpurWorldConfig { public double pigMaxHealth = 10.0D; public boolean pigGiveSaddleBack = false; public int pigBreedingTicks = 6000; @@ -1786,7 +1786,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -1419,6 +1494,7 @@ public class PurpurWorldConfig { +@@ -1415,6 +1490,7 @@ public class PurpurWorldConfig { pigMaxHealth = getDouble("mobs.pig.attributes.max_health", pigMaxHealth); pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); pigBreedingTicks = getInt("mobs.pig.breeding-delay-ticks", pigBreedingTicks); @@ -1794,7 +1794,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean piglinRidable = false; -@@ -1426,6 +1502,7 @@ public class PurpurWorldConfig { +@@ -1422,6 +1498,7 @@ public class PurpurWorldConfig { public boolean piglinControllable = true; public double piglinMaxHealth = 16.0D; public boolean piglinBypassMobGriefing = false; @@ -1802,7 +1802,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1437,12 +1514,14 @@ public class PurpurWorldConfig { +@@ -1433,12 +1510,14 @@ public class PurpurWorldConfig { } piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth); piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); @@ -1817,7 +1817,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void piglinBruteSettings() { piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable); piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater); -@@ -1453,6 +1532,7 @@ public class PurpurWorldConfig { +@@ -1449,6 +1528,7 @@ public class PurpurWorldConfig { set("mobs.piglin_brute.attributes.max_health", oldValue); } piglinBruteMaxHealth = getDouble("mobs.piglin_brute.attributes.max_health", piglinBruteMaxHealth); @@ -1825,7 +1825,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean pillagerRidable = false; -@@ -1460,6 +1540,7 @@ public class PurpurWorldConfig { +@@ -1456,6 +1536,7 @@ public class PurpurWorldConfig { public boolean pillagerControllable = true; public double pillagerMaxHealth = 24.0D; public boolean pillagerBypassMobGriefing = false; @@ -1833,7 +1833,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -1471,6 +1552,7 @@ public class PurpurWorldConfig { +@@ -1467,6 +1548,7 @@ public class PurpurWorldConfig { } pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); pillagerBypassMobGriefing = getBoolean("mobs.pillager.bypass-mob-griefing", pillagerBypassMobGriefing); @@ -1841,7 +1841,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean polarBearRidable = false; -@@ -1480,6 +1562,7 @@ public class PurpurWorldConfig { +@@ -1476,6 +1558,7 @@ public class PurpurWorldConfig { public String polarBearBreedableItemString = ""; public Item polarBearBreedableItem = null; public int polarBearBreedingTicks = 6000; @@ -1849,7 +1849,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -1494,11 +1577,13 @@ public class PurpurWorldConfig { +@@ -1490,11 +1573,13 @@ public class PurpurWorldConfig { Item item = BuiltInRegistries.ITEM.get(new ResourceLocation(polarBearBreedableItemString)); if (item != Items.AIR) polarBearBreedableItem = item; polarBearBreedingTicks = getInt("mobs.polar_bear.breeding-delay-ticks", polarBearBreedingTicks); @@ -1863,7 +1863,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void pufferfishSettings() { pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable); pufferfishControllable = getBoolean("mobs.pufferfish.controllable", pufferfishControllable); -@@ -1508,6 +1593,7 @@ public class PurpurWorldConfig { +@@ -1504,6 +1589,7 @@ public class PurpurWorldConfig { set("mobs.pufferfish.attributes.max_health", oldValue); } pufferfishMaxHealth = getDouble("mobs.pufferfish.attributes.max_health", pufferfishMaxHealth); @@ -1871,7 +1871,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean rabbitRidable = false; -@@ -1518,6 +1604,7 @@ public class PurpurWorldConfig { +@@ -1514,6 +1600,7 @@ public class PurpurWorldConfig { public double rabbitNaturalKiller = 0.0D; public int rabbitBreedingTicks = 6000; public boolean rabbitBypassMobGriefing = false; @@ -1879,7 +1879,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1532,6 +1619,7 @@ public class PurpurWorldConfig { +@@ -1528,6 +1615,7 @@ public class PurpurWorldConfig { rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller); rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks); rabbitBypassMobGriefing = getBoolean("mobs.rabbit.bypass-mob-griefing", rabbitBypassMobGriefing); @@ -1887,7 +1887,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean ravagerRidable = false; -@@ -1539,6 +1627,7 @@ public class PurpurWorldConfig { +@@ -1535,6 +1623,7 @@ public class PurpurWorldConfig { public boolean ravagerControllable = true; public double ravagerMaxHealth = 100.0D; public boolean ravagerBypassMobGriefing = false; @@ -1895,7 +1895,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1550,11 +1639,13 @@ public class PurpurWorldConfig { +@@ -1546,11 +1635,13 @@ public class PurpurWorldConfig { } ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth); ravagerBypassMobGriefing = getBoolean("mobs.ravager.bypass-mob-griefing", ravagerBypassMobGriefing); @@ -1909,7 +1909,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void salmonSettings() { salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable); salmonControllable = getBoolean("mobs.salmon.controllable", salmonControllable); -@@ -1564,6 +1655,7 @@ public class PurpurWorldConfig { +@@ -1560,6 +1651,7 @@ public class PurpurWorldConfig { set("mobs.salmon.attributes.max_health", oldValue); } salmonMaxHealth = getDouble("mobs.salmon.attributes.max_health", salmonMaxHealth); @@ -1917,7 +1917,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean sheepRidable = false; -@@ -1572,6 +1664,7 @@ public class PurpurWorldConfig { +@@ -1568,6 +1660,7 @@ public class PurpurWorldConfig { public double sheepMaxHealth = 8.0D; public int sheepBreedingTicks = 6000; public boolean sheepBypassMobGriefing = false; @@ -1925,7 +1925,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1584,12 +1677,14 @@ public class PurpurWorldConfig { +@@ -1580,12 +1673,14 @@ public class PurpurWorldConfig { sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing); @@ -1940,7 +1940,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -1600,6 +1695,7 @@ public class PurpurWorldConfig { +@@ -1596,6 +1691,7 @@ public class PurpurWorldConfig { set("mobs.shulker.attributes.max_health", oldValue); } shulkerMaxHealth = getDouble("mobs.shulker.attributes.max_health", shulkerMaxHealth); @@ -1948,7 +1948,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean silverfishRidable = false; -@@ -1607,6 +1703,7 @@ public class PurpurWorldConfig { +@@ -1603,6 +1699,7 @@ public class PurpurWorldConfig { public boolean silverfishControllable = true; public double silverfishMaxHealth = 8.0D; public boolean silverfishBypassMobGriefing = false; @@ -1956,7 +1956,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -1618,12 +1715,14 @@ public class PurpurWorldConfig { +@@ -1614,12 +1711,14 @@ public class PurpurWorldConfig { } silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max_health", silverfishMaxHealth); silverfishBypassMobGriefing = getBoolean("mobs.silverfish.bypass-mob-griefing", silverfishBypassMobGriefing); @@ -1971,7 +1971,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -1634,6 +1733,7 @@ public class PurpurWorldConfig { +@@ -1630,6 +1729,7 @@ public class PurpurWorldConfig { set("mobs.skeleton.attributes.max_health", oldValue); } skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); @@ -1979,7 +1979,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean skeletonHorseRidableInWater = true; -@@ -1644,6 +1744,7 @@ public class PurpurWorldConfig { +@@ -1640,6 +1740,7 @@ public class PurpurWorldConfig { public double skeletonHorseJumpStrengthMax = 1.0D; public double skeletonHorseMovementSpeedMin = 0.2D; public double skeletonHorseMovementSpeedMax = 0.2D; @@ -1987,7 +1987,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void skeletonHorseSettings() { skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); skeletonHorseCanSwim = getBoolean("mobs.skeleton_horse.can-swim", skeletonHorseCanSwim); -@@ -1659,6 +1760,7 @@ public class PurpurWorldConfig { +@@ -1655,6 +1756,7 @@ public class PurpurWorldConfig { skeletonHorseJumpStrengthMax = getDouble("mobs.skeleton_horse.attributes.jump_strength.max", skeletonHorseJumpStrengthMax); skeletonHorseMovementSpeedMin = getDouble("mobs.skeleton_horse.attributes.movement_speed.min", skeletonHorseMovementSpeedMin); skeletonHorseMovementSpeedMax = getDouble("mobs.skeleton_horse.attributes.movement_speed.max", skeletonHorseMovementSpeedMax); @@ -1995,7 +1995,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean slimeRidable = false; -@@ -1668,6 +1770,7 @@ public class PurpurWorldConfig { +@@ -1664,6 +1766,7 @@ public class PurpurWorldConfig { public String slimeAttackDamage = "size"; public Map slimeMaxHealthCache = new HashMap<>(); public Map slimeAttackDamageCache = new HashMap<>(); @@ -2003,7 +2003,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -1681,6 +1784,7 @@ public class PurpurWorldConfig { +@@ -1677,6 +1780,7 @@ public class PurpurWorldConfig { slimeAttackDamage = getString("mobs.slime.attributes.attack_damage", slimeAttackDamage); slimeMaxHealthCache.clear(); slimeAttackDamageCache.clear(); @@ -2011,7 +2011,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean snowGolemRidable = false; -@@ -1695,6 +1799,7 @@ public class PurpurWorldConfig { +@@ -1691,6 +1795,7 @@ public class PurpurWorldConfig { public float snowGolemSnowBallModifier = 10.0F; public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; @@ -2019,7 +2019,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1713,6 +1818,7 @@ public class PurpurWorldConfig { +@@ -1709,6 +1814,7 @@ public class PurpurWorldConfig { snowGolemSnowBallModifier = (float) getDouble("mobs.snow_golem.snow-ball-modifier", snowGolemSnowBallModifier); snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance); snowGolemBypassMobGriefing = getBoolean("mobs.snow_golem.bypass-mob-griefing", snowGolemBypassMobGriefing); @@ -2027,7 +2027,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean snifferRidable = false; -@@ -1734,6 +1840,7 @@ public class PurpurWorldConfig { +@@ -1730,6 +1836,7 @@ public class PurpurWorldConfig { public boolean squidImmuneToEAR = true; public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; @@ -2035,7 +2035,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1746,12 +1853,14 @@ public class PurpurWorldConfig { +@@ -1742,12 +1849,14 @@ public class PurpurWorldConfig { squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); squidsCanFly = getBoolean("mobs.squid.can-fly", squidsCanFly); @@ -2050,7 +2050,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -1762,12 +1871,14 @@ public class PurpurWorldConfig { +@@ -1758,12 +1867,14 @@ public class PurpurWorldConfig { set("mobs.spider.attributes.max_health", oldValue); } spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth); @@ -2065,7 +2065,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -1778,6 +1889,7 @@ public class PurpurWorldConfig { +@@ -1774,6 +1885,7 @@ public class PurpurWorldConfig { set("mobs.stray.attributes.max_health", oldValue); } strayMaxHealth = getDouble("mobs.stray.attributes.max_health", strayMaxHealth); @@ -2073,7 +2073,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean striderRidable = false; -@@ -1786,6 +1898,7 @@ public class PurpurWorldConfig { +@@ -1782,6 +1894,7 @@ public class PurpurWorldConfig { public double striderMaxHealth = 20.0D; public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; @@ -2081,7 +2081,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1798,6 +1911,7 @@ public class PurpurWorldConfig { +@@ -1794,6 +1907,7 @@ public class PurpurWorldConfig { striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); striderGiveSaddleBack = getBoolean("mobs.strider.give-saddle-back", striderGiveSaddleBack); @@ -2089,7 +2089,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean tadpoleRidable = false; -@@ -1819,6 +1933,7 @@ public class PurpurWorldConfig { +@@ -1815,6 +1929,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMin = 0.175D; public double traderLlamaMovementSpeedMax = 0.175D; public int traderLlamaBreedingTicks = 6000; @@ -2097,7 +2097,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -1837,11 +1952,13 @@ public class PurpurWorldConfig { +@@ -1833,11 +1948,13 @@ public class PurpurWorldConfig { traderLlamaMovementSpeedMin = getDouble("mobs.trader_llama.attributes.movement_speed.min", traderLlamaMovementSpeedMin); traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax); traderLlamaBreedingTicks = getInt("mobs.trader_llama.breeding-delay-ticks", traderLlamaBreedingTicks); @@ -2111,7 +2111,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); tropicalFishControllable = getBoolean("mobs.tropical_fish.controllable", tropicalFishControllable); -@@ -1851,6 +1968,7 @@ public class PurpurWorldConfig { +@@ -1847,6 +1964,7 @@ public class PurpurWorldConfig { set("mobs.tropical_fish.attributes.max_health", oldValue); } tropicalFishMaxHealth = getDouble("mobs.tropical_fish.attributes.max_health", tropicalFishMaxHealth); @@ -2119,7 +2119,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean turtleRidable = false; -@@ -1858,6 +1976,7 @@ public class PurpurWorldConfig { +@@ -1854,6 +1972,7 @@ public class PurpurWorldConfig { public boolean turtleControllable = true; public double turtleMaxHealth = 30.0D; public int turtleBreedingTicks = 6000; @@ -2127,7 +2127,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -1869,6 +1988,7 @@ public class PurpurWorldConfig { +@@ -1865,6 +1984,7 @@ public class PurpurWorldConfig { } turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); turtleBreedingTicks = getInt("mobs.turtle.breeding-delay-ticks", turtleBreedingTicks); @@ -2135,7 +2135,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean vexRidable = false; -@@ -1876,6 +1996,7 @@ public class PurpurWorldConfig { +@@ -1872,6 +1992,7 @@ public class PurpurWorldConfig { public boolean vexControllable = true; public double vexMaxY = 320D; public double vexMaxHealth = 14.0D; @@ -2143,7 +2143,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -1887,6 +2008,7 @@ public class PurpurWorldConfig { +@@ -1883,6 +2004,7 @@ public class PurpurWorldConfig { set("mobs.vex.attributes.max_health", oldValue); } vexMaxHealth = getDouble("mobs.vex.attributes.max_health", vexMaxHealth); @@ -2151,7 +2151,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean villagerRidable = false; -@@ -1900,6 +2022,7 @@ public class PurpurWorldConfig { +@@ -1896,6 +2018,7 @@ public class PurpurWorldConfig { public boolean villagerClericsFarmWarts = false; public boolean villagerClericFarmersThrowWarts = true; public boolean villagerBypassMobGriefing = false; @@ -2159,7 +2159,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1917,6 +2040,7 @@ public class PurpurWorldConfig { +@@ -1913,6 +2036,7 @@ public class PurpurWorldConfig { villagerClericsFarmWarts = getBoolean("mobs.villager.clerics-farm-warts", villagerClericsFarmWarts); villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts); villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); @@ -2167,7 +2167,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean vindicatorRidable = false; -@@ -1924,6 +2048,7 @@ public class PurpurWorldConfig { +@@ -1920,6 +2044,7 @@ public class PurpurWorldConfig { public boolean vindicatorControllable = true; public double vindicatorMaxHealth = 24.0D; public double vindicatorJohnnySpawnChance = 0D; @@ -2175,7 +2175,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -1935,6 +2060,7 @@ public class PurpurWorldConfig { +@@ -1931,6 +2056,7 @@ public class PurpurWorldConfig { } vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); vindicatorJohnnySpawnChance = getDouble("mobs.vindicator.johnny.spawn-chance", vindicatorJohnnySpawnChance); @@ -2183,7 +2183,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean wanderingTraderRidable = false; -@@ -1943,6 +2069,7 @@ public class PurpurWorldConfig { +@@ -1939,6 +2065,7 @@ public class PurpurWorldConfig { public double wanderingTraderMaxHealth = 20.0D; public boolean wanderingTraderFollowEmeraldBlock = false; public boolean wanderingTraderCanBeLeashed = false; @@ -2191,7 +2191,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -1955,6 +2082,7 @@ public class PurpurWorldConfig { +@@ -1951,6 +2078,7 @@ public class PurpurWorldConfig { wanderingTraderMaxHealth = getDouble("mobs.wandering_trader.attributes.max_health", wanderingTraderMaxHealth); wanderingTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", wanderingTraderFollowEmeraldBlock); wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); @@ -2199,7 +2199,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean wardenRidable = false; -@@ -1970,6 +2098,7 @@ public class PurpurWorldConfig { +@@ -1966,6 +2094,7 @@ public class PurpurWorldConfig { public boolean witchRidableInWater = true; public boolean witchControllable = true; public double witchMaxHealth = 26.0D; @@ -2207,7 +2207,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -1980,6 +2109,7 @@ public class PurpurWorldConfig { +@@ -1976,6 +2105,7 @@ public class PurpurWorldConfig { set("mobs.witch.attributes.max_health", oldValue); } witchMaxHealth = getDouble("mobs.witch.attributes.max_health", witchMaxHealth); @@ -2215,7 +2215,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean witherRidable = false; -@@ -1990,6 +2120,7 @@ public class PurpurWorldConfig { +@@ -1986,6 +2116,7 @@ public class PurpurWorldConfig { public float witherHealthRegenAmount = 1.0f; public int witherHealthRegenDelay = 20; public boolean witherBypassMobGriefing = false; @@ -2223,7 +2223,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2008,12 +2139,14 @@ public class PurpurWorldConfig { +@@ -2004,12 +2135,14 @@ public class PurpurWorldConfig { witherHealthRegenAmount = (float) getDouble("mobs.wither.health-regen-amount", witherHealthRegenAmount); witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay); witherBypassMobGriefing = getBoolean("mobs.wither.bypass-mob-griefing", witherBypassMobGriefing); @@ -2238,7 +2238,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -2024,6 +2157,7 @@ public class PurpurWorldConfig { +@@ -2020,6 +2153,7 @@ public class PurpurWorldConfig { set("mobs.wither_skeleton.attributes.max_health", oldValue); } witherSkeletonMaxHealth = getDouble("mobs.wither_skeleton.attributes.max_health", witherSkeletonMaxHealth); @@ -2246,7 +2246,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean wolfRidable = false; -@@ -2034,6 +2168,7 @@ public class PurpurWorldConfig { +@@ -2030,6 +2164,7 @@ public class PurpurWorldConfig { public boolean wolfMilkCuresRabies = true; public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; @@ -2254,7 +2254,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -2052,12 +2187,14 @@ public class PurpurWorldConfig { +@@ -2048,12 +2183,14 @@ public class PurpurWorldConfig { wolfMilkCuresRabies = getBoolean("mobs.wolf.milk-cures-rabid-wolves", wolfMilkCuresRabies); wolfNaturalRabid = getDouble("mobs.wolf.spawn-rabid-chance", wolfNaturalRabid); wolfBreedingTicks = getInt("mobs.wolf.breeding-delay-ticks", wolfBreedingTicks); @@ -2269,7 +2269,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -2068,6 +2205,7 @@ public class PurpurWorldConfig { +@@ -2064,6 +2201,7 @@ public class PurpurWorldConfig { set("mobs.zoglin.attributes.max_health", oldValue); } zoglinMaxHealth = getDouble("mobs.zoglin.attributes.max_health", zoglinMaxHealth); @@ -2277,7 +2277,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean zombieRidable = false; -@@ -2080,6 +2218,7 @@ public class PurpurWorldConfig { +@@ -2076,6 +2214,7 @@ public class PurpurWorldConfig { public boolean zombieJockeyTryExistingChickens = true; public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; @@ -2285,7 +2285,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2096,6 +2235,7 @@ public class PurpurWorldConfig { +@@ -2092,6 +2231,7 @@ public class PurpurWorldConfig { zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens); zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging); zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); @@ -2293,7 +2293,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean zombieHorseRidableInWater = false; -@@ -2107,6 +2247,7 @@ public class PurpurWorldConfig { +@@ -2103,6 +2243,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMin = 0.2D; public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; @@ -2301,7 +2301,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void zombieHorseSettings() { zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); zombieHorseCanSwim = getBoolean("mobs.zombie_horse.can-swim", zombieHorseCanSwim); -@@ -2123,6 +2264,7 @@ public class PurpurWorldConfig { +@@ -2119,6 +2260,7 @@ public class PurpurWorldConfig { zombieHorseMovementSpeedMin = getDouble("mobs.zombie_horse.attributes.movement_speed.min", zombieHorseMovementSpeedMin); zombieHorseMovementSpeedMax = getDouble("mobs.zombie_horse.attributes.movement_speed.max", zombieHorseMovementSpeedMax); zombieHorseSpawnChance = getDouble("mobs.zombie_horse.spawn-chance", zombieHorseSpawnChance); @@ -2309,7 +2309,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean zombieVillagerRidable = false; -@@ -2133,6 +2275,7 @@ public class PurpurWorldConfig { +@@ -2129,6 +2271,7 @@ public class PurpurWorldConfig { public boolean zombieVillagerJockeyOnlyBaby = true; public double zombieVillagerJockeyChance = 0.05D; public boolean zombieVillagerJockeyTryExistingChickens = true; @@ -2317,7 +2317,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2147,6 +2290,7 @@ public class PurpurWorldConfig { +@@ -2143,6 +2286,7 @@ public class PurpurWorldConfig { zombieVillagerJockeyOnlyBaby = getBoolean("mobs.zombie_villager.jockey.only-babies", zombieVillagerJockeyOnlyBaby); zombieVillagerJockeyChance = getDouble("mobs.zombie_villager.jockey.chance", zombieVillagerJockeyChance); zombieVillagerJockeyTryExistingChickens = getBoolean("mobs.zombie_villager.jockey.try-existing-chickens", zombieVillagerJockeyTryExistingChickens); @@ -2325,7 +2325,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f } public boolean zombifiedPiglinRidable = false; -@@ -2158,6 +2302,7 @@ public class PurpurWorldConfig { +@@ -2154,6 +2298,7 @@ public class PurpurWorldConfig { public double zombifiedPiglinJockeyChance = 0.05D; public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; @@ -2333,7 +2333,7 @@ index c72af60345ac9704118ff9d19295d1a663a1e985..d077e5c5bc108d7ad37caf8339be449f private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2173,5 +2318,6 @@ public class PurpurWorldConfig { +@@ -2169,5 +2314,6 @@ public class PurpurWorldConfig { zombifiedPiglinJockeyChance = getDouble("mobs.zombified_piglin.jockey.chance", zombifiedPiglinJockeyChance); zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens); zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); diff --git a/patches/unapplied/server/0130-Config-to-always-tame-in-Creative.patch b/patches/server/0127-Config-to-always-tame-in-Creative.patch similarity index 87% rename from patches/unapplied/server/0130-Config-to-always-tame-in-Creative.patch rename to patches/server/0127-Config-to-always-tame-in-Creative.patch index 70ead4a8b..e3736e49f 100644 --- a/patches/unapplied/server/0130-Config-to-always-tame-in-Creative.patch +++ b/patches/server/0127-Config-to-always-tame-in-Creative.patch @@ -7,23 +7,23 @@ Adds a configuration option that ensures a player in Creative always tames a tam This essentially allows Creative mode players to tame animals on their first try. diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java -index 7fc5b5d624b61a3de9c71e975b51d20c5800be00..8fb070b1ae11d34b2fa420ded58097d421263cab 100644 +index b0944fa1f3849dd24cd010fa0a6638f5fd7179d1..a3074ec9b430c9d0a0ef33fe353db643849fab7d 100644 --- a/src/main/java/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java +++ b/src/main/java/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java -@@ -66,7 +66,7 @@ public class RunAroundLikeCrazyGoal extends Goal { +@@ -67,7 +67,7 @@ public class RunAroundLikeCrazyGoal extends Goal { int i = this.horse.getTemper(); int j = this.horse.getMaxTemper(); - if (j > 0 && this.horse.getRandom().nextInt(j) < i && !CraftEventFactory.callEntityTameEvent(this.horse, ((CraftHumanEntity) this.horse.getBukkitEntity().getPassenger()).getHandle()).isCancelled()) { // CraftBukkit - fire EntityTameEvent + if ((this.horse.level().purpurConfig.alwaysTameInCreative && ((Player) entity).getAbilities().instabuild) || (j > 0 && this.horse.getRandom().nextInt(j) < i && !CraftEventFactory.callEntityTameEvent(this.horse, ((CraftHumanEntity) this.horse.getBukkitEntity().getPassenger()).getHandle()).isCancelled())) { // CraftBukkit - fire EntityTameEvent // Purpur - this.horse.tameWithName((Player) entity); + this.horse.tameWithName(entityhuman); return; } diff --git a/src/main/java/net/minecraft/world/entity/animal/Cat.java b/src/main/java/net/minecraft/world/entity/animal/Cat.java -index 1554e4a0e068e06ec121adf56421f8332132f062..7f1763b820a0c5dc69bdf6cdf14a97a283ba5916 100644 +index 9279eb3c7a8affbecba1a8b27ca0685021676f39..9a40cd8d7d4789a8b43f5194bdc67dc6753eed21 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cat.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java -@@ -470,7 +470,7 @@ public class Cat extends TamableAnimal implements VariantHolder { +@@ -471,7 +471,7 @@ public class Cat extends TamableAnimal implements VariantHolder { } } else if (this.isFood(itemstack)) { this.usePlayerItem(player, hand, itemstack); @@ -33,10 +33,10 @@ index 1554e4a0e068e06ec121adf56421f8332132f062..7f1763b820a0c5dc69bdf6cdf14a97a2 this.setOrderedToSit(true); this.level().broadcastEntityEvent(this, (byte) 7); diff --git a/src/main/java/net/minecraft/world/entity/animal/Parrot.java b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -index 583cbd4e891647d974b3ca4fc51d4aae6d2acb88..4c64feca8d78b907406cc409bd6beef4b3bd35f3 100644 +index a2c2c453c83bcc99ffebe8566f04288f01fa120a..5c7400bab81b87e908010bab6684b072c51a8adc 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -@@ -334,7 +334,7 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder iterable = world.getCollisions(this.player, axisalignedbb1.deflate(9.999999747378752E-6D)); diff --git a/src/main/java/net/minecraft/world/damagesource/CombatTracker.java b/src/main/java/net/minecraft/world/damagesource/CombatTracker.java -index c12d7bacf2c54f268b1bc5e46250a083ca041415..c6f8ae130b75fbb0ad41f9a5917e934e33fd3043 100644 +index 9c99b2e365aacb8309f29acb9025faccd2c676b3..9e3608650c44ef5fa724c3aea86603d7bd02429c 100644 --- a/src/main/java/net/minecraft/world/damagesource/CombatTracker.java +++ b/src/main/java/net/minecraft/world/damagesource/CombatTracker.java @@ -99,6 +99,11 @@ public class CombatTracker { @@ -107,7 +107,7 @@ index 61e3bce901bdbf111ffc06521b0e6d5369fce051..ea9d99990b718beaef4bee3ff7534065 public static String serverModName = "Purpur"; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fd2865f5be6bffd8fcbbac35151e9dde2149ab8d..dec3823baee9264ea5257993d9b30df337e2d9bd 100644 +index 55941d33fd619db4f25e29d51b1bc8a522bb29ba..651448bc3b84686b675349f0e72c699ce506ab82 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -197,6 +197,10 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/server/0134-One-Punch-Man.patch b/patches/server/0131-One-Punch-Man.patch similarity index 87% rename from patches/unapplied/server/0134-One-Punch-Man.patch rename to patches/server/0131-One-Punch-Man.patch index 0e70be511..199bee04b 100644 --- a/patches/unapplied/server/0134-One-Punch-Man.patch +++ b/patches/server/0131-One-Punch-Man.patch @@ -5,10 +5,10 @@ Subject: [PATCH] One Punch Man! diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 97dfdf4f5730d9f7c162f127bab38833cf757b4d..5ae73f8f86b0f55890b961cdbb8a31ff0ffc6209 100644 +index 73f3853b4e554fc75b9f49f11df1060bd6340261..4af38169c6b541cb5087542f0c49420db5c9a7b9 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -2297,6 +2297,20 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2305,6 +2305,20 @@ public abstract class LivingEntity extends Entity implements Attackable { } } @@ -30,10 +30,10 @@ index 97dfdf4f5730d9f7c162f127bab38833cf757b4d..5ae73f8f86b0f55890b961cdbb8a31ff if (human) { // PAIL: Be sure to drag all this code from the EntityHuman subclass each update. diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index dec3823baee9264ea5257993d9b30df337e2d9bd..c0a6940d923a85c923502c07df11cceba093cc95 100644 +index 651448bc3b84686b675349f0e72c699ce506ab82..50d10795981069b031170ef0de3a50603541f1c8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -346,6 +346,7 @@ public class PurpurWorldConfig { +@@ -344,6 +344,7 @@ public class PurpurWorldConfig { public boolean teleportIfOutsideBorder = false; public boolean totemOfUndyingWorksInInventory = false; public boolean playerFixStuckPortal = false; @@ -41,7 +41,7 @@ index dec3823baee9264ea5257993d9b30df337e2d9bd..c0a6940d923a85c923502c07df11cceb private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -364,6 +365,7 @@ public class PurpurWorldConfig { +@@ -360,6 +361,7 @@ public class PurpurWorldConfig { teleportIfOutsideBorder = getBoolean("gameplay-mechanics.player.teleport-if-outside-border", teleportIfOutsideBorder); totemOfUndyingWorksInInventory = getBoolean("gameplay-mechanics.player.totem-of-undying-works-in-inventory", totemOfUndyingWorksInInventory); playerFixStuckPortal = getBoolean("gameplay-mechanics.player.fix-stuck-in-portal", playerFixStuckPortal); diff --git a/patches/unapplied/server/0135-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch b/patches/server/0132-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch similarity index 93% rename from patches/unapplied/server/0135-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch rename to patches/server/0132-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch index a98af83ab..0e0fbdefc 100644 --- a/patches/unapplied/server/0135-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch +++ b/patches/server/0132-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch @@ -8,10 +8,10 @@ Subject: [PATCH] Configurable Ender Pearl cooldown, damage, and Endermite RNG - Endermite spawn chance diff --git a/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java b/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java -index e8114d89a3129e56c0329410a49ded63cc77cb4c..5c12355ed8b9eb1367173dd956975db279e2fb73 100644 +index e02d5dcbf69bd68b2f567c1a16a44ab59955f871..daf6701b20d03090ab4896e0c1897850300a2fea 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java +++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java -@@ -68,7 +68,7 @@ public class ThrownEnderpearl extends ThrowableItemProjectile { +@@ -67,7 +67,7 @@ public class ThrownEnderpearl extends ThrowableItemProjectile { Bukkit.getPluginManager().callEvent(teleEvent); if (!teleEvent.isCancelled() && entityplayer.connection.isAcceptingMessages()) { @@ -20,7 +20,7 @@ index e8114d89a3129e56c0329410a49ded63cc77cb4c..5c12355ed8b9eb1367173dd956975db2 Endermite entityendermite = (Endermite) EntityType.ENDERMITE.create(this.level()); if (entityendermite != null) { -@@ -84,7 +84,7 @@ public class ThrownEnderpearl extends ThrowableItemProjectile { +@@ -83,7 +83,7 @@ public class ThrownEnderpearl extends ThrowableItemProjectile { entityplayer.connection.teleport(teleEvent.getTo()); entity.resetFallDistance(); CraftEventFactory.entityDamage = this; @@ -43,7 +43,7 @@ index 749ab72edc0d2e9c6f1161415ab8d59d3d6ca976..897c202c0905040072a06fdfa2032a7f // Paper end if (user instanceof net.minecraft.server.level.ServerPlayer) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c0a6940d923a85c923502c07df11cceba093cc95..02f332f2d1497668fbdf2e430d757f8699dc3a9a 100644 +index 50d10795981069b031170ef0de3a50603541f1c8..c09528388118f2386de3de14b8c1cb8896ebf556 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -201,6 +201,10 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/server/0136-Config-to-ignore-nearby-mobs-when-sleeping.patch b/patches/server/0133-Config-to-ignore-nearby-mobs-when-sleeping.patch similarity index 85% rename from patches/unapplied/server/0136-Config-to-ignore-nearby-mobs-when-sleeping.patch rename to patches/server/0133-Config-to-ignore-nearby-mobs-when-sleeping.patch index 28d309f07..9ae9e1cc5 100644 --- a/patches/unapplied/server/0136-Config-to-ignore-nearby-mobs-when-sleeping.patch +++ b/patches/server/0133-Config-to-ignore-nearby-mobs-when-sleeping.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config to ignore nearby mobs when sleeping diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 08532053face8fcba4a808830d618d2e5f0da8ee..fe1591b8ae12eaffdd44b23c4c55f580512f293e 100644 +index 6d1bb046bad2a3d28ee64a06f69c3c377109fd10..6b61c985be3c19221b229542f0d0e902d085a772 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1430,7 +1430,7 @@ public class ServerPlayer extends Player { +@@ -1423,7 +1423,7 @@ public class ServerPlayer extends Player { return entitymonster.isPreventingPlayerRest(this); }); @@ -18,10 +18,10 @@ index 08532053face8fcba4a808830d618d2e5f0da8ee..fe1591b8ae12eaffdd44b23c4c55f580 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 02f332f2d1497668fbdf2e430d757f8699dc3a9a..7db005d02e762163c403a8358281afc2fa4f2df1 100644 +index c09528388118f2386de3de14b8c1cb8896ebf556..33db128ff2046a7a36eb5d70b35d10947f83a931 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -355,6 +355,7 @@ public class PurpurWorldConfig { +@@ -353,6 +353,7 @@ public class PurpurWorldConfig { public boolean totemOfUndyingWorksInInventory = false; public boolean playerFixStuckPortal = false; public boolean creativeOnePunch = false; @@ -29,7 +29,7 @@ index 02f332f2d1497668fbdf2e430d757f8699dc3a9a..7db005d02e762163c403a8358281afc2 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -374,6 +375,7 @@ public class PurpurWorldConfig { +@@ -370,6 +371,7 @@ public class PurpurWorldConfig { totemOfUndyingWorksInInventory = getBoolean("gameplay-mechanics.player.totem-of-undying-works-in-inventory", totemOfUndyingWorksInInventory); playerFixStuckPortal = getBoolean("gameplay-mechanics.player.fix-stuck-in-portal", playerFixStuckPortal); creativeOnePunch = getBoolean("gameplay-mechanics.player.one-punch-in-creative", creativeOnePunch); diff --git a/patches/unapplied/server/0137-Add-back-player-spawned-endermite-API.patch b/patches/server/0134-Add-back-player-spawned-endermite-API.patch similarity index 88% rename from patches/unapplied/server/0137-Add-back-player-spawned-endermite-API.patch rename to patches/server/0134-Add-back-player-spawned-endermite-API.patch index 9681f9e0c..4c423c0ca 100644 --- a/patches/unapplied/server/0137-Add-back-player-spawned-endermite-API.patch +++ b/patches/server/0134-Add-back-player-spawned-endermite-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add back player spawned endermite API diff --git a/src/main/java/net/minecraft/world/entity/monster/Endermite.java b/src/main/java/net/minecraft/world/entity/monster/Endermite.java -index cb0a2d522176a2d1d9785f95d205d4d924912a32..0cbf5a32611848e15e83eb0fc6f16c68337753c5 100644 +index 936add0eb7204af7dc507c786cb82e0d7a76d5dc..c0c3ab5dbf5987e543e6cdd1a814d2ec3ec17939 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Endermite.java +++ b/src/main/java/net/minecraft/world/entity/monster/Endermite.java -@@ -31,6 +31,7 @@ import net.minecraft.world.level.block.state.BlockState; +@@ -32,6 +32,7 @@ import org.joml.Vector3f; public class Endermite extends Monster { private static final int MAX_LIFE = 2400; public int life; @@ -16,7 +16,7 @@ index cb0a2d522176a2d1d9785f95d205d4d924912a32..0cbf5a32611848e15e83eb0fc6f16c68 public Endermite(EntityType type, Level world) { super(type, world); -@@ -64,6 +65,14 @@ public class Endermite extends Monster { +@@ -65,6 +66,14 @@ public class Endermite extends Monster { return this.level().purpurConfig.endermiteTakeDamageFromWater; } @@ -31,7 +31,7 @@ index cb0a2d522176a2d1d9785f95d205d4d924912a32..0cbf5a32611848e15e83eb0fc6f16c68 @Override protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); -@@ -116,12 +125,14 @@ public class Endermite extends Monster { +@@ -117,12 +126,14 @@ public class Endermite extends Monster { public void readAdditionalSaveData(CompoundTag nbt) { super.readAdditionalSaveData(nbt); this.life = nbt.getInt("Lifetime"); @@ -47,10 +47,10 @@ index cb0a2d522176a2d1d9785f95d205d4d924912a32..0cbf5a32611848e15e83eb0fc6f16c68 @Override diff --git a/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java b/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java -index 5c12355ed8b9eb1367173dd956975db279e2fb73..d7359c675707eade00f9b737fd67ef8d066e813f 100644 +index daf6701b20d03090ab4896e0c1897850300a2fea..fb0f29b714344f0ac3e7f6bd809ac57a21061156 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java +++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java -@@ -72,6 +72,7 @@ public class ThrownEnderpearl extends ThrowableItemProjectile { +@@ -71,6 +71,7 @@ public class ThrownEnderpearl extends ThrowableItemProjectile { Endermite entityendermite = (Endermite) EntityType.ENDERMITE.create(this.level()); if (entityendermite != null) { diff --git a/patches/unapplied/server/0138-Config-Enderman-aggressiveness-towards-Endermites.patch b/patches/server/0135-Config-Enderman-aggressiveness-towards-Endermites.patch similarity index 90% rename from patches/unapplied/server/0138-Config-Enderman-aggressiveness-towards-Endermites.patch rename to patches/server/0135-Config-Enderman-aggressiveness-towards-Endermites.patch index 1bf71dd9e..24b6d5874 100644 --- a/patches/unapplied/server/0138-Config-Enderman-aggressiveness-towards-Endermites.patch +++ b/patches/server/0135-Config-Enderman-aggressiveness-towards-Endermites.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config Enderman aggressiveness towards Endermites 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 d4d4ad5dfa776a39eabb840ed5b49acb8d37f587..ea596b7344f1849a8c6a8d536881c9a8b9cadb86 100644 +index 5678d1026053e12c332b27a95c83d5de01116922..442355953084513b148083d80783ee3bc815dee9 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -132,7 +132,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -134,7 +134,7 @@ public class EnderMan extends Monster implements NeutralMob { this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.targetSelector.addGoal(1, new EnderMan.EndermanLookForPlayerGoal(this, this::isAngryAt)); this.targetSelector.addGoal(2, new HurtByTargetGoal(this, new Class[0])); @@ -18,10 +18,10 @@ index d4d4ad5dfa776a39eabb840ed5b49acb8d37f587..ea596b7344f1849a8c6a8d536881c9a8 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7db005d02e762163c403a8358281afc2fa4f2df1..a10a43afa33a025e89474786810db45241c145c5 100644 +index 33db128ff2046a7a36eb5d70b35d10947f83a931..fd7d88ed631d4b4675ce457f4e2de731223254aa 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1001,6 +1001,8 @@ public class PurpurWorldConfig { +@@ -997,6 +997,8 @@ public class PurpurWorldConfig { public boolean endermanDespawnEvenWithBlock = false; public boolean endermanBypassMobGriefing = false; public boolean endermanTakeDamageFromWater = true; @@ -30,7 +30,7 @@ index 7db005d02e762163c403a8358281afc2fa4f2df1..a10a43afa33a025e89474786810db452 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1010,11 +1012,17 @@ public class PurpurWorldConfig { +@@ -1006,11 +1008,17 @@ public class PurpurWorldConfig { set("mobs.enderman.attributes.max-health", null); set("mobs.enderman.attributes.max_health", oldValue); } diff --git a/patches/unapplied/server/0139-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch b/patches/server/0136-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch similarity index 88% rename from patches/unapplied/server/0139-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch rename to patches/server/0136-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch index 9a8380841..9b971c22e 100644 --- a/patches/unapplied/server/0139-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch +++ b/patches/server/0136-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch @@ -7,10 +7,10 @@ Prevents Enderman from becoming aggresive towards players that are wearing a Dra Adds functionality to a useless item! 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 ea596b7344f1849a8c6a8d536881c9a8b9cadb86..f4bf81ebcc792c8e04fa700e84b13b3b688dbdac 100644 +index 442355953084513b148083d80783ee3bc815dee9..a1c0109ee60de59674f0014557ae401b7d5f479d 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -269,7 +269,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -271,7 +271,7 @@ public class EnderMan extends Monster implements NeutralMob { // Paper end ItemStack itemstack = (ItemStack) player.getInventory().armor.get(3); @@ -20,10 +20,10 @@ index ea596b7344f1849a8c6a8d536881c9a8b9cadb86..f4bf81ebcc792c8e04fa700e84b13b3b } else { Vec3 vec3d = player.getViewVector(1.0F).normalize(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a10a43afa33a025e89474786810db45241c145c5..27581d6a560398e4e18425cfccd80e1dd9ec4dde 100644 +index fd7d88ed631d4b4675ce457f4e2de731223254aa..de246177d3fd248f0d926321b8696b1d13c507ed 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1003,6 +1003,8 @@ public class PurpurWorldConfig { +@@ -999,6 +999,8 @@ public class PurpurWorldConfig { public boolean endermanTakeDamageFromWater = true; public boolean endermanAggroEndermites = true; public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false; @@ -32,7 +32,7 @@ index a10a43afa33a025e89474786810db45241c145c5..27581d6a560398e4e18425cfccd80e1d private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1023,6 +1025,8 @@ public class PurpurWorldConfig { +@@ -1019,6 +1021,8 @@ public class PurpurWorldConfig { endermanTakeDamageFromWater = getBoolean("mobs.enderman.takes-damage-from-water", endermanTakeDamageFromWater); endermanAggroEndermites = getBoolean("mobs.enderman.aggressive-towards-endermites", endermanAggroEndermites); endermanAggroEndermitesOnlyIfPlayerSpawned = getBoolean("mobs.enderman.aggressive-towards-endermites-only-spawned-by-player-thrown-ender-pearls", endermanAggroEndermitesOnlyIfPlayerSpawned); diff --git a/patches/unapplied/server/0140-Tick-fluids-config.patch b/patches/server/0137-Tick-fluids-config.patch similarity index 90% rename from patches/unapplied/server/0140-Tick-fluids-config.patch rename to patches/server/0137-Tick-fluids-config.patch index 7ad38eb66..431b1e927 100644 --- a/patches/unapplied/server/0140-Tick-fluids-config.patch +++ b/patches/server/0137-Tick-fluids-config.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Tick fluids config diff --git a/src/main/java/net/minecraft/world/level/block/LiquidBlock.java b/src/main/java/net/minecraft/world/level/block/LiquidBlock.java -index bbabe4ad8afcc3a2069f6e9d4a9adcb643266894..55419bd653f7f5391fa13cd15a0b00fbff5e9c39 100644 +index 4a1830f85f47014da63e4584f411d13f0f0cd8b3..17b3dbb83fd9eb6ecdd58c1ac6446410b4bc3a51 100644 --- a/src/main/java/net/minecraft/world/level/block/LiquidBlock.java +++ b/src/main/java/net/minecraft/world/level/block/LiquidBlock.java -@@ -105,7 +105,7 @@ public class LiquidBlock extends Block implements BucketPickup { +@@ -107,7 +107,7 @@ public class LiquidBlock extends Block implements BucketPickup { @Override public void onPlace(BlockState state, Level world, BlockPos pos, BlockState oldState, boolean notify) { @@ -17,7 +17,7 @@ index bbabe4ad8afcc3a2069f6e9d4a9adcb643266894..55419bd653f7f5391fa13cd15a0b00fb world.scheduleTick(pos, state.getFluidState().getType(), this.getFlowSpeed(world, pos)); // Paper } -@@ -133,7 +133,7 @@ public class LiquidBlock extends Block implements BucketPickup { +@@ -135,7 +135,7 @@ public class LiquidBlock extends Block implements BucketPickup { @Override public BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor world, BlockPos pos, BlockPos neighborPos) { @@ -26,7 +26,7 @@ index bbabe4ad8afcc3a2069f6e9d4a9adcb643266894..55419bd653f7f5391fa13cd15a0b00fb world.scheduleTick(pos, state.getFluidState().getType(), this.fluid.getTickDelay(world)); } -@@ -142,7 +142,7 @@ public class LiquidBlock extends Block implements BucketPickup { +@@ -144,7 +144,7 @@ public class LiquidBlock extends Block implements BucketPickup { @Override public void neighborChanged(BlockState state, Level world, BlockPos pos, Block sourceBlock, BlockPos sourcePos, boolean notify) { @@ -36,7 +36,7 @@ index bbabe4ad8afcc3a2069f6e9d4a9adcb643266894..55419bd653f7f5391fa13cd15a0b00fb } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 27581d6a560398e4e18425cfccd80e1dd9ec4dde..ea25998e4855b6e900ed96e1d814231da97ea325 100644 +index de246177d3fd248f0d926321b8696b1d13c507ed..1e3825e70f7e9baeb76d520d945d51369457377f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -129,6 +129,7 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/server/0141-Config-to-disable-Llama-caravans.patch b/patches/server/0138-Config-to-disable-Llama-caravans.patch similarity index 90% rename from patches/unapplied/server/0141-Config-to-disable-Llama-caravans.patch rename to patches/server/0138-Config-to-disable-Llama-caravans.patch index 55d233b79..8b967f7ff 100644 --- a/patches/unapplied/server/0141-Config-to-disable-Llama-caravans.patch +++ b/patches/server/0138-Config-to-disable-Llama-caravans.patch @@ -19,10 +19,10 @@ index 849f0c7c6d13df00d90211a48d8b56ab156812b8..3fc9528201fb96d6a0f905afe0b6a82e List 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 b7450d182ecf10ef17ac9eb3fce04e4334013c91..fac46dd905f9a634cff393494f6ff0404eb17fb7 100644 +index d0717a81ae7b3c55fb47917508b456408484658b..fb6bca763fcbb249c86c1e360274d4458df19bfc 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 -@@ -539,7 +539,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder diff --git a/src/main/java/net/minecraft/world/level/block/SpongeBlock.java b/src/main/java/net/minecraft/world/level/block/SpongeBlock.java -index 4bce895268542531598a01a1bccd8ac1ed703b7d..709dd0af07f2439d7c7e8b5cd0677580dc3f6278 100644 +index d810f6bf9a8a354e5b8994e51ec3672428277dde..e7b19fa84d9dce28dd88a3b4adcb83576dcb98a8 100644 --- a/src/main/java/net/minecraft/world/level/block/SpongeBlock.java +++ b/src/main/java/net/minecraft/world/level/block/SpongeBlock.java -@@ -48,7 +48,7 @@ public class SpongeBlock extends Block { +@@ -51,7 +51,7 @@ public class SpongeBlock extends Block { private boolean removeWaterBreadthFirstSearch(Level world, BlockPos pos) { BlockStateListPopulator blockList = new BlockStateListPopulator(world); // CraftBukkit - Use BlockStateListPopulator @@ -21,10 +21,10 @@ index 4bce895268542531598a01a1bccd8ac1ed703b7d..709dd0af07f2439d7c7e8b5cd0677580 int i = aenumdirection.length; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 761f8546ce1314e488aaa21faa0a912b64699c2b..347d2f5d5a8d380cea2fd483a68423375fc76908 100644 +index 13d2d69181ceb9c211e675c58930649bd67005ed..2b6817d593f1f501055d57cb08be873917823b05 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -633,6 +633,13 @@ public class PurpurWorldConfig { +@@ -629,6 +629,13 @@ public class PurpurWorldConfig { spawnerDeactivateByRedstone = getBoolean("blocks.spawner.deactivate-by-redstone", spawnerDeactivateByRedstone); } diff --git a/patches/unapplied/server/0155-Projectile-offset-config.patch b/patches/server/0152-Projectile-offset-config.patch similarity index 98% rename from patches/unapplied/server/0155-Projectile-offset-config.patch rename to patches/server/0152-Projectile-offset-config.patch index bd929c08e..f554306cf 100644 --- a/patches/unapplied/server/0155-Projectile-offset-config.patch +++ b/patches/server/0152-Projectile-offset-config.patch @@ -96,10 +96,10 @@ index 06c2f30b77a2c8aecc65e0c305f643d53798f364..6d1573161f0d8c7999f84925ba7bbf53 entitythrowntrident.pickup = AbstractArrow.Pickup.CREATIVE_ONLY; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 347d2f5d5a8d380cea2fd483a68423375fc76908..683c1b7a3cc283b7806d5fa9784aba2d96f962f8 100644 +index 2b6817d593f1f501055d57cb08be873917823b05..82dfee00977a201b14cd13a2b88a8d76e5955fca 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -426,6 +426,23 @@ public class PurpurWorldConfig { +@@ -422,6 +422,23 @@ public class PurpurWorldConfig { //} } diff --git a/patches/unapplied/server/0156-Config-for-powered-rail-activation-distance.patch b/patches/server/0153-Config-for-powered-rail-activation-distance.patch similarity index 91% rename from patches/unapplied/server/0156-Config-for-powered-rail-activation-distance.patch rename to patches/server/0153-Config-for-powered-rail-activation-distance.patch index da810f131..9f5118180 100644 --- a/patches/unapplied/server/0156-Config-for-powered-rail-activation-distance.patch +++ b/patches/server/0153-Config-for-powered-rail-activation-distance.patch @@ -18,10 +18,10 @@ index 7fddb6fa8fd30ef88346a59f7867aae792f13772..40893e71fe8447b695350273bef9623b } else { int j = pos.getX(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 683c1b7a3cc283b7806d5fa9784aba2d96f962f8..46364a5178218bee2de43f4725efe15ab7521b3b 100644 +index 82dfee00977a201b14cd13a2b88a8d76e5955fca..4bd01834faafc8bbfb29818063c9acd42d44a8fa 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -619,6 +619,11 @@ public class PurpurWorldConfig { +@@ -615,6 +615,11 @@ public class PurpurWorldConfig { powderSnowBypassMobGriefing = getBoolean("blocks.powder_snow.bypass-mob-griefing", powderSnowBypassMobGriefing); } diff --git a/patches/unapplied/server/0157-Piglin-portal-spawn-modifier.patch b/patches/server/0154-Piglin-portal-spawn-modifier.patch similarity index 93% rename from patches/unapplied/server/0157-Piglin-portal-spawn-modifier.patch rename to patches/server/0154-Piglin-portal-spawn-modifier.patch index 7b6630453..3d7246463 100644 --- a/patches/unapplied/server/0157-Piglin-portal-spawn-modifier.patch +++ b/patches/server/0154-Piglin-portal-spawn-modifier.patch @@ -31,10 +31,10 @@ index 2c085c4a154cb0f8a1d38453f43474a764398784..589b437e7c97c846410f293e2f014bdc pos = pos.below(); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 46364a5178218bee2de43f4725efe15ab7521b3b..52a903facc05e61e36b0919946c4a18604ebcd92 100644 +index 4bd01834faafc8bbfb29818063c9acd42d44a8fa..b71f78d71d88e051cb12bf1cf09abb909a4d0465 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1651,6 +1651,7 @@ public class PurpurWorldConfig { +@@ -1647,6 +1647,7 @@ public class PurpurWorldConfig { public double piglinMaxHealth = 16.0D; public boolean piglinBypassMobGriefing = false; public boolean piglinTakeDamageFromWater = false; @@ -42,7 +42,7 @@ index 46364a5178218bee2de43f4725efe15ab7521b3b..52a903facc05e61e36b0919946c4a186 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1663,6 +1664,7 @@ public class PurpurWorldConfig { +@@ -1659,6 +1660,7 @@ public class PurpurWorldConfig { piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth); piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater); diff --git a/patches/unapplied/server/0158-Config-to-change-max-number-of-bees.patch b/patches/server/0155-Config-to-change-max-number-of-bees.patch similarity index 96% rename from patches/unapplied/server/0158-Config-to-change-max-number-of-bees.patch rename to patches/server/0155-Config-to-change-max-number-of-bees.patch index 80aeb3a34..fad4fde19 100644 --- a/patches/unapplied/server/0158-Config-to-change-max-number-of-bees.patch +++ b/patches/server/0155-Config-to-change-max-number-of-bees.patch @@ -18,7 +18,7 @@ index 41c9f074203915c31c1ae7a160ce509c13383f84..a16a1df28258d605cf5908dbe19bda5d public BeehiveBlockEntity(BlockPos pos, BlockState state) { super(BlockEntityType.BEEHIVE, pos, state); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 0ebd43cf4163e2f3b06d1f6475421c03e08a1bd5..a212357e968393f4d303364e63092defad3d7835 100644 +index 5697ce5ead8dc7e463206a56d489c99c861a9bb1..85a41b50a1f0a89264585ecd621e7e5a1de67efc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -250,6 +250,7 @@ public class PurpurConfig { diff --git a/patches/unapplied/server/0159-Config-for-wither-explosion-radius.patch b/patches/server/0156-Config-for-wither-explosion-radius.patch similarity index 92% rename from patches/unapplied/server/0159-Config-for-wither-explosion-radius.patch rename to patches/server/0156-Config-for-wither-explosion-radius.patch index 7e086249d..623482c4d 100644 --- a/patches/unapplied/server/0159-Config-for-wither-explosion-radius.patch +++ b/patches/server/0156-Config-for-wither-explosion-radius.patch @@ -18,10 +18,10 @@ index f40ab9d5b18c189ba9b572e49243640bd44362d1..b4687453256ead43cf5288994316c7bf if (!event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 52a903facc05e61e36b0919946c4a18604ebcd92..2188706d89a36500da3571d2761b830f7c8fe60f 100644 +index b71f78d71d88e051cb12bf1cf09abb909a4d0465..714e605d56a35c69c057fa810e6a18649cb8cba0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2294,6 +2294,7 @@ public class PurpurWorldConfig { +@@ -2290,6 +2290,7 @@ public class PurpurWorldConfig { public boolean witherBypassMobGriefing = false; public boolean witherTakeDamageFromWater = false; public boolean witherCanRideVehicles = false; @@ -29,7 +29,7 @@ index 52a903facc05e61e36b0919946c4a18604ebcd92..2188706d89a36500da3571d2761b830f private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2314,6 +2315,7 @@ public class PurpurWorldConfig { +@@ -2310,6 +2311,7 @@ public class PurpurWorldConfig { witherBypassMobGriefing = getBoolean("mobs.wither.bypass-mob-griefing", witherBypassMobGriefing); witherTakeDamageFromWater = getBoolean("mobs.wither.takes-damage-from-water", witherTakeDamageFromWater); witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles); diff --git a/patches/unapplied/server/0160-Gamemode-extra-permissions.patch b/patches/server/0157-Gamemode-extra-permissions.patch similarity index 97% rename from patches/unapplied/server/0160-Gamemode-extra-permissions.patch rename to patches/server/0157-Gamemode-extra-permissions.patch index 31f78b319..ac3c741ba 100644 --- a/patches/unapplied/server/0160-Gamemode-extra-permissions.patch +++ b/patches/server/0157-Gamemode-extra-permissions.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Gamemode extra permissions diff --git a/src/main/java/net/minecraft/commands/CommandSourceStack.java b/src/main/java/net/minecraft/commands/CommandSourceStack.java -index f03fd95412883a3a5bbe2b91c603874bf147e6cb..873659dcf8c8431f21bd2b23b8d7bdb4ea7e03e8 100644 +index 756651db912068c837197a972e95bc66ab9d4a70..106b27d507b16297a0a88b3b5beaaf3d0ef7e2c6 100644 --- a/src/main/java/net/minecraft/commands/CommandSourceStack.java +++ b/src/main/java/net/minecraft/commands/CommandSourceStack.java -@@ -227,6 +227,19 @@ public class CommandSourceStack implements SharedSuggestionProvider, com.destroy +@@ -223,6 +223,19 @@ public class CommandSourceStack implements SharedSuggestionProvider, com.destroy } // CraftBukkit end diff --git a/patches/unapplied/server/0161-Configurable-piston-push-limit.patch b/patches/server/0158-Configurable-piston-push-limit.patch similarity index 94% rename from patches/unapplied/server/0161-Configurable-piston-push-limit.patch rename to patches/server/0158-Configurable-piston-push-limit.patch index 3b884bb01..1f4a926ae 100644 --- a/patches/unapplied/server/0161-Configurable-piston-push-limit.patch +++ b/patches/server/0158-Configurable-piston-push-limit.patch @@ -36,10 +36,10 @@ index 744d91546d1a810f60a43c15ed74b4158f341a4a..354538daefa603f6df5a139b6bff87db } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2188706d89a36500da3571d2761b830f7c8fe60f..5baac1391199d4877c566beb45b5eaca29cfbff2 100644 +index 714e605d56a35c69c057fa810e6a18649cb8cba0..99c7e2ff1dfdb7e9bb755c6081232c1c64c96396 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -614,6 +614,11 @@ public class PurpurWorldConfig { +@@ -610,6 +610,11 @@ public class PurpurWorldConfig { lavaSpeedNotNether = getInt("blocks.lava.speed.not-nether", lavaSpeedNotNether); } diff --git a/patches/unapplied/server/0162-Configurable-broadcast-settings.patch b/patches/server/0159-Configurable-broadcast-settings.patch similarity index 73% rename from patches/unapplied/server/0162-Configurable-broadcast-settings.patch rename to patches/server/0159-Configurable-broadcast-settings.patch index 64196d579..d99b1a593 100644 --- a/patches/unapplied/server/0162-Configurable-broadcast-settings.patch +++ b/patches/server/0159-Configurable-broadcast-settings.patch @@ -5,19 +5,19 @@ Subject: [PATCH] Configurable broadcast settings diff --git a/src/main/java/net/minecraft/server/PlayerAdvancements.java b/src/main/java/net/minecraft/server/PlayerAdvancements.java -index 52891c4a4260d1938f2f4565b5219ad303555638..69d349613f01ab0ac1890734657da52984704f29 100644 +index 0b3a06027f2c600960cd88159803be187c4d0317..533a348acb53c8e7590f3d81c19e53a655101713 100644 --- a/src/main/java/net/minecraft/server/PlayerAdvancements.java +++ b/src/main/java/net/minecraft/server/PlayerAdvancements.java -@@ -250,6 +250,7 @@ public class PlayerAdvancements { - advancement.getRewards().grant(this.player); - // Paper start - Add Adventure message to PlayerAdvancementDoneEvent - if (message != null && this.player.level().getGameRules().getBoolean(GameRules.RULE_ANNOUNCE_ADVANCEMENTS)) { -+ if (org.purpurmc.purpur.PurpurConfig.advancementOnlyBroadcastToAffectedPlayer) this.player.sendMessage(message); else // Purpur - this.playerList.broadcastSystemMessage(io.papermc.paper.adventure.PaperAdventure.asVanilla(message), false); - // Paper end - } +@@ -247,6 +247,7 @@ public class PlayerAdvancements { + advancement.value().display().ifPresent((advancementdisplay) -> { + // Paper start - Add Adventure message to PlayerAdvancementDoneEvent + if (event.message() != null && this.player.level().getGameRules().getBoolean(GameRules.RULE_ANNOUNCE_ADVANCEMENTS)) { ++ if (org.purpurmc.purpur.PurpurConfig.advancementOnlyBroadcastToAffectedPlayer) this.player.sendMessage(message); else // Purpur + this.playerList.broadcastSystemMessage(io.papermc.paper.adventure.PaperAdventure.asVanilla(event.message()), false); + // Paper end + } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index ea7a533546c53539355ea1501b027399e6ba1bd8..784634596696521cfbd58e85392183dd96b843b0 100644 +index 6b61c985be3c19221b229542f0d0e902d085a772..e2627f8bb71375eccaff4706b74285263e28f2b1 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1004,6 +1004,7 @@ public class ServerPlayer extends Player { @@ -29,7 +29,7 @@ index ea7a533546c53539355ea1501b027399e6ba1bd8..784634596696521cfbd58e85392183dd if (scoreboardteambase.getDeathMessageVisibility() == Team.Visibility.HIDE_FOR_OTHER_TEAMS) { this.server.getPlayerList().broadcastSystemToTeam(this, ichatbasecomponent); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 3d0fc534454cd8b543e4fa55aa9dfe1e55ee1b49..6420f7043f7f88eef90051db9af8c6567945c553 100644 +index a66c35ce86437311b38d1787c766bbe179cc5dfa..a0f45333ef049ac950295504bb7526f949dcbede 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -203,6 +203,18 @@ public class PurpurConfig { diff --git a/patches/unapplied/server/0163-Configurable-mob-blindness.patch b/patches/server/0160-Configurable-mob-blindness.patch similarity index 92% rename from patches/unapplied/server/0163-Configurable-mob-blindness.patch rename to patches/server/0160-Configurable-mob-blindness.patch index 397bef277..7facd6c75 100644 --- a/patches/unapplied/server/0163-Configurable-mob-blindness.patch +++ b/patches/server/0160-Configurable-mob-blindness.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Configurable mob blindness Ported from https://github.com/raltsmc/mobblindness diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 217a0082f7f260678253f31e381a432099555177..cdae47c490555efad0eb2d2ae6498888aeaf21bd 100644 +index b6a17432cf41a686df2449dc260fdc3941698c9b..2e89a05402dd895eee4a27a345318baeabbd1f96 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1036,6 +1036,17 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1037,6 +1037,17 @@ public abstract class LivingEntity extends Entity implements Attackable { if (entitytypes == EntityType.SKELETON && itemstack.is(Items.SKELETON_SKULL) || entitytypes == EntityType.ZOMBIE && itemstack.is(Items.ZOMBIE_HEAD) || entitytypes == EntityType.PIGLIN && itemstack.is(Items.PIGLIN_HEAD) || entitytypes == EntityType.PIGLIN_BRUTE && itemstack.is(Items.PIGLIN_HEAD) || entitytypes == EntityType.CREEPER && itemstack.is(Items.CREEPER_HEAD)) { d0 *= 0.5D; } @@ -28,7 +28,7 @@ index 217a0082f7f260678253f31e381a432099555177..cdae47c490555efad0eb2d2ae6498888 return d0; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5baac1391199d4877c566beb45b5eaca29cfbff2..08f0f4d9c7abb4db26f11655f2544e1af3775531 100644 +index 99c7e2ff1dfdb7e9bb755c6081232c1c64c96396..01b3d8263d24f6b58da087c751c001a6bd5c723c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -132,6 +132,7 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/server/0164-Hide-hidden-players-from-entity-selector.patch b/patches/server/0161-Hide-hidden-players-from-entity-selector.patch similarity index 92% rename from patches/unapplied/server/0164-Hide-hidden-players-from-entity-selector.patch rename to patches/server/0161-Hide-hidden-players-from-entity-selector.patch index cc4803150..f70ac362e 100644 --- a/patches/unapplied/server/0164-Hide-hidden-players-from-entity-selector.patch +++ b/patches/server/0161-Hide-hidden-players-from-entity-selector.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Hide hidden players from entity selector diff --git a/src/main/java/net/minecraft/commands/arguments/selector/EntitySelector.java b/src/main/java/net/minecraft/commands/arguments/selector/EntitySelector.java -index f25b9330e068c7d9e12cb57a7761cfef9ebaf7bc..7e66aaa960ce7b6dda7c064d4c6856cc4b368b58 100644 +index 73c15a0c56a103ba4e62f0a51af8d42566b07245..d630c5a1aed706265d1e077da540c0bf723b838d 100644 --- a/src/main/java/net/minecraft/commands/arguments/selector/EntitySelector.java +++ b/src/main/java/net/minecraft/commands/arguments/selector/EntitySelector.java @@ -200,10 +200,10 @@ public class EntitySelector { @@ -21,8 +21,8 @@ index f25b9330e068c7d9e12cb57a7761cfef9ebaf7bc..7e66aaa960ce7b6dda7c064d4c6856cc } else { Vec3 vec3d = (Vec3) this.position.apply(source.getPosition()); Predicate predicate = this.getPredicate(vec3d); -@@ -213,7 +213,7 @@ public class EntitySelector { - ServerPlayer entityplayer1 = (ServerPlayer) source.getEntity(); +@@ -215,7 +215,7 @@ public class EntitySelector { + ServerPlayer entityplayer1 = (ServerPlayer) entity; if (predicate.test(entityplayer1)) { - return Lists.newArrayList(new ServerPlayer[]{entityplayer1}); @@ -30,7 +30,7 @@ index f25b9330e068c7d9e12cb57a7761cfef9ebaf7bc..7e66aaa960ce7b6dda7c064d4c6856cc } } -@@ -224,6 +224,7 @@ public class EntitySelector { +@@ -226,6 +226,7 @@ public class EntitySelector { if (this.isWorldLimited()) { object = source.getLevel().getPlayers(predicate, i); @@ -38,7 +38,7 @@ index f25b9330e068c7d9e12cb57a7761cfef9ebaf7bc..7e66aaa960ce7b6dda7c064d4c6856cc } else { object = Lists.newArrayList(); Iterator iterator = source.getServer().getPlayerList().getPlayers().iterator(); -@@ -231,7 +232,7 @@ public class EntitySelector { +@@ -233,7 +234,7 @@ public class EntitySelector { while (iterator.hasNext()) { ServerPlayer entityplayer2 = (ServerPlayer) iterator.next(); @@ -47,7 +47,7 @@ index f25b9330e068c7d9e12cb57a7761cfef9ebaf7bc..7e66aaa960ce7b6dda7c064d4c6856cc ((List) object).add(entityplayer2); if (((List) object).size() >= i) { return (List) object; -@@ -276,4 +277,10 @@ public class EntitySelector { +@@ -278,4 +279,10 @@ public class EntitySelector { public static Component joinNames(List entities) { return ComponentUtils.formatList(entities, Entity::getDisplayName); } @@ -59,7 +59,7 @@ index f25b9330e068c7d9e12cb57a7761cfef9ebaf7bc..7e66aaa960ce7b6dda7c064d4c6856cc + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 6420f7043f7f88eef90051db9af8c6567945c553..3efda1177f3141851f8f1580b462e3a839303845 100644 +index a0f45333ef049ac950295504bb7526f949dcbede..8b2ec98b74f441b36acb94e0c6477ddaa2d333e8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -246,6 +246,7 @@ public class PurpurConfig { diff --git a/patches/unapplied/server/0165-Config-for-health-to-impact-Creeper-explosion-radius.patch b/patches/server/0162-Config-for-health-to-impact-Creeper-explosion-radius.patch similarity index 92% rename from patches/unapplied/server/0165-Config-for-health-to-impact-Creeper-explosion-radius.patch rename to patches/server/0162-Config-for-health-to-impact-Creeper-explosion-radius.patch index 06177143d..5f5bf13a6 100644 --- a/patches/unapplied/server/0165-Config-for-health-to-impact-Creeper-explosion-radius.patch +++ b/patches/server/0162-Config-for-health-to-impact-Creeper-explosion-radius.patch @@ -21,10 +21,10 @@ index fd3b1e92a626402112bbd371a0ac1264a2c19c32..a8bc27c858c6ddec2ff2f84b5c1dc51c // CraftBukkit end this.dead = true; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 08f0f4d9c7abb4db26f11655f2544e1af3775531..7057382f67491b6b21b66c81e0ccaf8b59b04c1b 100644 +index 01b3d8263d24f6b58da087c751c001a6bd5c723c..ae367a21e60425f5720a3532e2a6d99cafa9e33f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -932,6 +932,7 @@ public class PurpurWorldConfig { +@@ -928,6 +928,7 @@ public class PurpurWorldConfig { public boolean creeperBypassMobGriefing = false; public boolean creeperTakeDamageFromWater = false; public boolean creeperExplodeWhenKilled = false; @@ -32,7 +32,7 @@ index 08f0f4d9c7abb4db26f11655f2544e1af3775531..7057382f67491b6b21b66c81e0ccaf8b private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -947,6 +948,7 @@ public class PurpurWorldConfig { +@@ -943,6 +944,7 @@ public class PurpurWorldConfig { creeperBypassMobGriefing = getBoolean("mobs.creeper.bypass-mob-griefing", creeperBypassMobGriefing); creeperTakeDamageFromWater = getBoolean("mobs.creeper.takes-damage-from-water", creeperTakeDamageFromWater); creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled); diff --git a/patches/unapplied/server/0166-Iron-golem-calm-anger-options.patch b/patches/server/0163-Iron-golem-calm-anger-options.patch similarity index 96% rename from patches/unapplied/server/0166-Iron-golem-calm-anger-options.patch rename to patches/server/0163-Iron-golem-calm-anger-options.patch index 00080d2cd..7c2030848 100644 --- a/patches/unapplied/server/0166-Iron-golem-calm-anger-options.patch +++ b/patches/server/0163-Iron-golem-calm-anger-options.patch @@ -25,10 +25,10 @@ index 58539d29b8e2a8c0676cc574f64e7d61613e1451..1ffb8e1c386fc85796432281ac407a93 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7057382f67491b6b21b66c81e0ccaf8b59b04c1b..956b1281d0484c86ee7642b1732de489679dc3d9 100644 +index ae367a21e60425f5720a3532e2a6d99cafa9e33f..db9c2ac59a8a1a1659ab44420d9583d224be2c05 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1390,6 +1390,8 @@ public class PurpurWorldConfig { +@@ -1386,6 +1386,8 @@ public class PurpurWorldConfig { public boolean ironGolemCanSwim = false; public double ironGolemMaxHealth = 100.0D; public boolean ironGolemTakeDamageFromWater = false; @@ -37,7 +37,7 @@ index 7057382f67491b6b21b66c81e0ccaf8b59b04c1b..956b1281d0484c86ee7642b1732de489 private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1402,6 +1404,8 @@ public class PurpurWorldConfig { +@@ -1398,6 +1400,8 @@ public class PurpurWorldConfig { } ironGolemMaxHealth = getDouble("mobs.iron_golem.attributes.max_health", ironGolemMaxHealth); ironGolemTakeDamageFromWater = getBoolean("mobs.iron_golem.takes-damage-from-water", ironGolemTakeDamageFromWater); diff --git a/patches/unapplied/server/0167-Breedable-parrots.patch b/patches/server/0164-Breedable-parrots.patch similarity index 85% rename from patches/unapplied/server/0167-Breedable-parrots.patch rename to patches/server/0164-Breedable-parrots.patch index 2878f11ba..eb8ed2241 100644 --- a/patches/unapplied/server/0167-Breedable-parrots.patch +++ b/patches/server/0164-Breedable-parrots.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Breedable parrots diff --git a/src/main/java/net/minecraft/world/entity/animal/Parrot.java b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -index 4c64feca8d78b907406cc409bd6beef4b3bd35f3..6e8fc61b04796da5a8820812b5e88110f774b77a 100644 +index 5c7400bab81b87e908010bab6684b072c51a8adc..364a2d9f7a77e10862c84398d5fade7e9a401dbb 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -@@ -226,6 +226,7 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder type, LevelAccessor world, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { -@@ -379,13 +381,13 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index dbd61da31192896ced9839cf8a3b123a6625ae60..68be1bb59c7e5176c82ed128be5296a2511212ec 100644 +index dcfa461492623e70b65dfb090c8a078fe88613cd..70625c6337d3a68c27c046115186fbf76196588d 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -497,6 +497,21 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -490,6 +490,21 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { return true; } @@ -32,10 +32,10 @@ index dbd61da31192896ced9839cf8a3b123a6625ae60..68be1bb59c7e5176c82ed128be5296a2 return this.hardCollides; } diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 011ed6108e3caf3836809fb1d065714ba360c589..5964f72d866539722082d6a9d1ebb3ec7dc960ab 100644 +index 2e89a05402dd895eee4a27a345318baeabbd1f96..7e4d059882a804edc7d6536d4ee409c1822c5b2a 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -263,6 +263,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -264,6 +264,7 @@ public abstract class LivingEntity extends Entity implements Attackable { public org.bukkit.craftbukkit.entity.CraftLivingEntity getBukkitLivingEntity() { return (org.bukkit.craftbukkit.entity.CraftLivingEntity) super.getBukkitEntity(); } // Paper public boolean silentDeath = false; // Paper - mark entity as dying silently for cancellable death event public net.kyori.adventure.util.TriState frictionState = net.kyori.adventure.util.TriState.NOT_SET; // Paper @@ -43,7 +43,7 @@ index 011ed6108e3caf3836809fb1d065714ba360c589..5964f72d866539722082d6a9d1ebb3ec @Override public float getBukkitYaw() { -@@ -804,6 +805,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -805,6 +806,7 @@ public abstract class LivingEntity extends Entity implements Attackable { dataresult.resultOrPartial(logger::error).ifPresent((nbtbase) -> { nbt.put("Brain", nbtbase); }); @@ -51,7 +51,7 @@ index 011ed6108e3caf3836809fb1d065714ba360c589..5964f72d866539722082d6a9d1ebb3ec } @Override -@@ -888,6 +890,11 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -889,6 +891,11 @@ public abstract class LivingEntity extends Entity implements Attackable { this.brain = this.makeBrain(new Dynamic(NbtOps.INSTANCE, nbt.get("Brain"))); } @@ -63,7 +63,7 @@ index 011ed6108e3caf3836809fb1d065714ba360c589..5964f72d866539722082d6a9d1ebb3ec } // CraftBukkit start -@@ -3541,6 +3548,27 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3544,6 +3551,27 @@ public abstract class LivingEntity extends Entity implements Attackable { this.hurt(this.damageSources().drown(), 1.0F); } @@ -92,10 +92,10 @@ index 011ed6108e3caf3836809fb1d065714ba360c589..5964f72d866539722082d6a9d1ebb3ec public boolean isSensitiveToWater() { diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 6ae71386cdc0d30defd9a86b97f5e619d2dbf5fe..1910f1ad22b2d2b79ad0161d20dcc9772ff2bd7f 100644 +index 6766e78c961d17a6f380f6814c9ddb120b374d5f..eafc2eb59616fa4a310a5eee0844a9957cd9f4de 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -1746,17 +1746,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -1749,17 +1749,7 @@ public abstract class Mob extends LivingEntity implements Targeting { } public boolean isSunBurnTick() { @@ -115,7 +115,7 @@ index 6ae71386cdc0d30defd9a86b97f5e619d2dbf5fe..1910f1ad22b2d2b79ad0161d20dcc977 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java -index b31076f93fda4db8306135a2679be598063b2e09..de9b2bc63b46e6728acde9e7a6a7cda9b6441897 100644 +index 2dbcfd847dd5b6db587b291a8a7a6e278949c3a9..f35637a105d5aa12fb57c2456f2b2a7db12a49f0 100644 --- a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java @@ -66,6 +66,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo @@ -191,10 +191,10 @@ index b31076f93fda4db8306135a2679be598063b2e09..de9b2bc63b46e6728acde9e7a6a7cda9 // Paper end 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 31706620960f5f153565f3cf64e32d0f4d10feb8..1df39e11d4fe3146fba9a0605c623384513311ac 100644 +index b361078339f01881ee6806049ecc2490fd5cf6bf..481a6cf3dfc2948d80071920b905b488de8737e5 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Husk.java +++ b/src/main/java/net/minecraft/world/entity/monster/Husk.java -@@ -20,6 +20,7 @@ public class Husk extends Zombie { +@@ -22,6 +22,7 @@ public class Husk extends Zombie { public Husk(EntityType type, Level world) { super(type, world); @@ -202,7 +202,7 @@ index 31706620960f5f153565f3cf64e32d0f4d10feb8..1df39e11d4fe3146fba9a0605c623384 } // Purpur start -@@ -75,7 +76,7 @@ public class Husk extends Zombie { +@@ -77,7 +78,7 @@ public class Husk extends Zombie { @Override public boolean isSunSensitive() { @@ -212,10 +212,10 @@ index 31706620960f5f153565f3cf64e32d0f4d10feb8..1df39e11d4fe3146fba9a0605c623384 @Override 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 7c9f6076f68de295e882e69137ac573db8d9698b..8605dfe152a09f31492226b1eb2a5eb39db9fcbc 100644 +index 030b81dd8c52ddb300e73d792f9c4cea4e8a8d46..1d4a292a37069408420ca90b1c2784229781f93f 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -@@ -60,6 +60,7 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -61,6 +61,7 @@ public class Phantom extends FlyingMob implements Enemy { this.xpReward = 5; this.moveControl = new Phantom.PhantomMoveControl(this); this.lookControl = new Phantom.PhantomLookControl(this); @@ -223,7 +223,7 @@ index 7c9f6076f68de295e882e69137ac573db8d9698b..8605dfe152a09f31492226b1eb2a5eb3 } // Purpur start -@@ -253,16 +254,7 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -254,16 +255,7 @@ public class Phantom extends FlyingMob implements Enemy { @Override public void aiStep() { @@ -241,7 +241,7 @@ index 7c9f6076f68de295e882e69137ac573db8d9698b..8605dfe152a09f31492226b1eb2a5eb3 super.aiStep(); } -@@ -290,7 +282,7 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -291,7 +283,7 @@ public class Phantom extends FlyingMob implements Enemy { if (nbt.hasUUID("Paper.SpawningEntity")) { this.spawningEntity = nbt.getUUID("Paper.SpawningEntity"); } @@ -250,7 +250,7 @@ index 7c9f6076f68de295e882e69137ac573db8d9698b..8605dfe152a09f31492226b1eb2a5eb3 this.shouldBurnInDay = nbt.getBoolean("Paper.ShouldBurnInDay"); } // Paper end -@@ -307,7 +299,7 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -308,7 +300,7 @@ public class Phantom extends FlyingMob implements Enemy { if (this.spawningEntity != null) { nbt.putUUID("Paper.SpawningEntity", this.spawningEntity); } @@ -259,7 +259,7 @@ index 7c9f6076f68de295e882e69137ac573db8d9698b..8605dfe152a09f31492226b1eb2a5eb3 // Paper end } -@@ -373,8 +365,14 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -378,8 +370,14 @@ public class Phantom extends FlyingMob implements Enemy { } public void setSpawningEntity(java.util.UUID entity) { this.spawningEntity = entity; } @@ -277,10 +277,10 @@ index 7c9f6076f68de295e882e69137ac573db8d9698b..8605dfe152a09f31492226b1eb2a5eb3 // Paper end private static enum AttackPhase { 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 a676d66dcb5ee72e6d8ffef4e210a3d2c8d605f2..0bc90b6d5c5a3cb3477d41336a9bb1130ff32fa1 100644 +index cb4a50f0259465eff425aac468cb409976b4de13..143ac5fac02a29516d03b69008b1345555857640 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -@@ -95,11 +95,12 @@ public class Zombie extends Monster { +@@ -96,11 +96,12 @@ public class Zombie extends Monster { private int inWaterTime; public int conversionTime; private int lastTick = MinecraftServer.currentTick; // CraftBukkit - add field @@ -294,7 +294,7 @@ index a676d66dcb5ee72e6d8ffef4e210a3d2c8d605f2..0bc90b6d5c5a3cb3477d41336a9bb113 } public Zombie(Level world) { -@@ -295,30 +296,7 @@ public class Zombie extends Monster { +@@ -296,30 +297,7 @@ public class Zombie extends Monster { @Override public void aiStep() { @@ -326,7 +326,7 @@ index a676d66dcb5ee72e6d8ffef4e210a3d2c8d605f2..0bc90b6d5c5a3cb3477d41336a9bb113 super.aiStep(); } -@@ -356,6 +334,7 @@ public class Zombie extends Monster { +@@ -357,6 +335,7 @@ public class Zombie extends Monster { } @@ -334,7 +334,7 @@ index a676d66dcb5ee72e6d8ffef4e210a3d2c8d605f2..0bc90b6d5c5a3cb3477d41336a9bb113 public boolean isSunSensitive() { return this.shouldBurnInDay; // Paper - use api value instead } -@@ -485,7 +464,7 @@ public class Zombie extends Monster { +@@ -486,7 +465,7 @@ public class Zombie extends Monster { nbt.putBoolean("CanBreakDoors", this.canBreakDoors()); nbt.putInt("InWaterTime", this.isInWater() ? this.inWaterTime : -1); nbt.putInt("DrownedConversionTime", this.isUnderWaterConverting() ? this.conversionTime : -1); @@ -343,7 +343,7 @@ index a676d66dcb5ee72e6d8ffef4e210a3d2c8d605f2..0bc90b6d5c5a3cb3477d41336a9bb113 } @Override -@@ -499,7 +478,7 @@ public class Zombie extends Monster { +@@ -500,7 +479,7 @@ public class Zombie extends Monster { } // Paper start if (nbt.contains("Paper.ShouldBurnInDay")) { @@ -353,11 +353,11 @@ index a676d66dcb5ee72e6d8ffef4e210a3d2c8d605f2..0bc90b6d5c5a3cb3477d41336a9bb113 // Paper end diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 283836981f5ed94dfc8999c3c5450213a1f2cfc1..feeca8d318fa0b7b22e728baa3bf3269d42bf0a6 100644 +index 2ed4e15e6fcd0d00556f772f6fa48e5817a2de2d..431e3cedde33b33202be1d44bf066323997f21f8 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -224,6 +224,11 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { - this.entityType = (type != null) ? type : EntityType.UNKNOWN; +@@ -223,6 +223,11 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { + this.entityType = CraftEntityType.minecraftToBukkit(entity.getType()); } + @Override @@ -369,7 +369,7 @@ index 283836981f5ed94dfc8999c3c5450213a1f2cfc1..feeca8d318fa0b7b22e728baa3bf3269 /* * Order is *EXTREMELY* important -- keep it right! =D diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 88fc33afb4a88d8c8b0a41331791f1ca87b8a8fd..0c9dec743ca3d83e3443c8be31c2c1589bbfa585 100644 +index 1001beea3538a9723074421047dc3fbecf063d02..a6934034c9fc8e3f04365d7595fccbe68fc093b6 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -1116,5 +1116,15 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { diff --git a/patches/server/0173-Config-MobEffect-by-world.patch b/patches/server/0173-Config-MobEffect-by-world.patch new file mode 100644 index 000000000..13d910bee --- /dev/null +++ b/patches/server/0173-Config-MobEffect-by-world.patch @@ -0,0 +1,99 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: DoctaEnkoda +Date: Sat, 23 Sep 2023 03:59:15 -0700 +Subject: [PATCH] Config MobEffect by world + + +diff --git a/src/main/java/net/minecraft/world/effect/HungerMobEffect.java b/src/main/java/net/minecraft/world/effect/HungerMobEffect.java +index 3aad6bd0a1fb7bb3f9b7dab2c10c875864900750..31bd845130e363dd11c225dfd1e9dd896aea8aac 100644 +--- a/src/main/java/net/minecraft/world/effect/HungerMobEffect.java ++++ b/src/main/java/net/minecraft/world/effect/HungerMobEffect.java +@@ -15,7 +15,7 @@ class HungerMobEffect extends MobEffect { + if (entity instanceof Player) { + Player entityhuman = (Player) entity; + +- entityhuman.causeFoodExhaustion(0.005F * (float) (amplifier + 1), org.bukkit.event.entity.EntityExhaustionEvent.ExhaustionReason.HUNGER_EFFECT); // CraftBukkit - EntityExhaustionEvent ++ entityhuman.causeFoodExhaustion(entity.level().purpurConfig.humanHungerExhaustionAmount * (float) (amplifier + 1), org.bukkit.event.entity.EntityExhaustionEvent.ExhaustionReason.HUNGER_EFFECT); // CraftBukkit - EntityExhaustionEvent // Purpur + } + + } +diff --git a/src/main/java/net/minecraft/world/effect/PoisonMobEffect.java b/src/main/java/net/minecraft/world/effect/PoisonMobEffect.java +index f8a8b825d21a7223a9839abda20825702985b7ad..41a853cd0f7d9aaa3d23df1c49a30fb29f19d14e 100644 +--- a/src/main/java/net/minecraft/world/effect/PoisonMobEffect.java ++++ b/src/main/java/net/minecraft/world/effect/PoisonMobEffect.java +@@ -11,8 +11,8 @@ class PoisonMobEffect extends MobEffect { + @Override + public void applyEffectTick(LivingEntity entity, int amplifier) { + super.applyEffectTick(entity, amplifier); +- if (entity.getHealth() > 1.0F) { +- entity.hurt(entity.damageSources().poison, 1.0F); // CraftBukkit - DamageSource.MAGIC -> CraftEventFactory.POISON ++ if (entity.getHealth() > entity.level().purpurConfig.entityMinimalHealthPoison) { // Purpur ++ entity.hurt(entity.damageSources().poison, entity.level().purpurConfig.entityPoisonDegenerationAmount); // CraftBukkit - DamageSource.MAGIC -> CraftEventFactory.POISON // Purpur + } + + } +diff --git a/src/main/java/net/minecraft/world/effect/RegenerationMobEffect.java b/src/main/java/net/minecraft/world/effect/RegenerationMobEffect.java +index 551b20f86347aeca4824b7a424ad7de7c0ff072e..f3b0158615af234a816caa67bfbce2e1517b28e2 100644 +--- a/src/main/java/net/minecraft/world/effect/RegenerationMobEffect.java ++++ b/src/main/java/net/minecraft/world/effect/RegenerationMobEffect.java +@@ -12,7 +12,7 @@ class RegenerationMobEffect extends MobEffect { + public void applyEffectTick(LivingEntity entity, int amplifier) { + super.applyEffectTick(entity, amplifier); + if (entity.getHealth() < entity.getMaxHealth()) { +- entity.heal(1.0F, org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason.MAGIC_REGEN); // CraftBukkit ++ entity.heal(entity.level().purpurConfig.entityHealthRegenAmount, RegainReason.MAGIC_REGEN); // CraftBukkit // Purpur + } + + } +diff --git a/src/main/java/net/minecraft/world/effect/SaturationMobEffect.java b/src/main/java/net/minecraft/world/effect/SaturationMobEffect.java +index b994ae09621934df2cdd6a83a7d8ecb44649fb16..c2b812c992db1ac9cd391da902c8d819a6ec2e6d 100644 +--- a/src/main/java/net/minecraft/world/effect/SaturationMobEffect.java ++++ b/src/main/java/net/minecraft/world/effect/SaturationMobEffect.java +@@ -23,7 +23,7 @@ class SaturationMobEffect extends InstantenousMobEffect { + int oldFoodLevel = entityhuman.getFoodData().foodLevel; + org.bukkit.event.entity.FoodLevelChangeEvent event = CraftEventFactory.callFoodLevelChangeEvent(entityhuman, amplifier + 1 + oldFoodLevel); + if (!event.isCancelled()) { +- entityhuman.getFoodData().eat(event.getFoodLevel() - oldFoodLevel, 1.0F); ++ entityhuman.getFoodData().eat(event.getFoodLevel() - oldFoodLevel, entity.level().purpurConfig.humanSaturationRegenAmount); // Purpur + } + + ((CraftPlayer) entityhuman.getBukkitEntity()).sendHealthUpdate(); +diff --git a/src/main/java/net/minecraft/world/effect/WitherMobEffect.java b/src/main/java/net/minecraft/world/effect/WitherMobEffect.java +index 1f9e0c139988c4c44a26552881647d36965aa4fa..b8d612d22aca74a08b53393c0723a2ae3a0b9ddf 100644 +--- a/src/main/java/net/minecraft/world/effect/WitherMobEffect.java ++++ b/src/main/java/net/minecraft/world/effect/WitherMobEffect.java +@@ -10,7 +10,7 @@ class WitherMobEffect extends MobEffect { + @Override + public void applyEffectTick(LivingEntity entity, int amplifier) { + super.applyEffectTick(entity, amplifier); +- entity.hurt(entity.damageSources().wither(), 1.0F); ++ entity.hurt(entity.damageSources().wither(), entity.level().purpurConfig.entityWitherDegenerationAmount); // Purpur + } + + @Override +diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +index f398039b41bc014c61dec0e932af4a93400bd252..bef591a3392c4fe94bd91d38071381c09f8293a4 100644 +--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java ++++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +@@ -331,6 +331,21 @@ public class PurpurWorldConfig { + poweredRailBoostModifier = getDouble("gameplay-mechanics.minecart.powered-rail.boost-modifier", poweredRailBoostModifier); + } + ++ public float entityHealthRegenAmount = 1.0F; ++ public float entityMinimalHealthPoison = 1.0F; ++ public float entityPoisonDegenerationAmount = 1.0F; ++ public float entityWitherDegenerationAmount = 1.0F; ++ public float humanHungerExhaustionAmount = 0.005F; ++ public float humanSaturationRegenAmount = 1.0F; ++ private void mobEffectSettings() { ++ entityHealthRegenAmount = (float) getDouble("gameplay-mechanics.mob-effects.health-regen-amount", entityHealthRegenAmount); ++ entityMinimalHealthPoison = (float) getDouble("gameplay-mechanics.mob-effects.minimal-health-poison-amount", entityMinimalHealthPoison); ++ entityPoisonDegenerationAmount = (float) getDouble("gameplay-mechanics.mob-effects.poison-degeneration-amount", entityPoisonDegenerationAmount); ++ entityWitherDegenerationAmount = (float) getDouble("gameplay-mechanics.mob-effects.wither-degeneration-amount", entityWitherDegenerationAmount); ++ humanHungerExhaustionAmount = (float) getDouble("gameplay-mechanics.mob-effects.hunger-exhaustion-amount", humanHungerExhaustionAmount); ++ humanSaturationRegenAmount = (float) getDouble("gameplay-mechanics.mob-effects.saturation-regen-amount", humanSaturationRegenAmount); ++ } ++ + public boolean catSpawning; + public boolean patrolSpawning; + public boolean phantomSpawning; diff --git a/patches/unapplied/server/0177-Beacon-Activation-Range-Configurable.patch b/patches/server/0174-Beacon-Activation-Range-Configurable.patch similarity index 88% rename from patches/unapplied/server/0177-Beacon-Activation-Range-Configurable.patch rename to patches/server/0174-Beacon-Activation-Range-Configurable.patch index 1f0fcaf33..ef0327b88 100644 --- a/patches/unapplied/server/0177-Beacon-Activation-Range-Configurable.patch +++ b/patches/server/0174-Beacon-Activation-Range-Configurable.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Beacon Activation Range Configurable diff --git a/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java -index 3b866e2c20ee7bfc981ff09b29065530de993778..12578b377b6e939971fb2dcba08637df60643e37 100644 +index f13943db6f2fb923c52dcf9e8bf7000041d0a362..a5f9747be5503dd24abd98f11cfa8229448ca3bf 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java -@@ -84,6 +84,16 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider, Name +@@ -88,6 +88,16 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider, Name public double getEffectRange() { if (this.effectRange < 0) { @@ -26,10 +26,10 @@ index 3b866e2c20ee7bfc981ff09b29065530de993778..12578b377b6e939971fb2dcba08637df } else { return effectRange; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f95596f39021e3da3155c3175a6fcec8c6eb7ff9..0eb16c3d850a92f3dc99e5daad9c3b6faba97137 100644 +index bef591a3392c4fe94bd91d38071381c09f8293a4..456a3cbadb5dbce0dfdafe4320c5006205a032bd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -508,6 +508,17 @@ public class PurpurWorldConfig { +@@ -504,6 +504,17 @@ public class PurpurWorldConfig { anvilColorsUseMiniMessage = getBoolean("blocks.anvil.use-mini-message", anvilColorsUseMiniMessage); } diff --git a/patches/unapplied/server/0178-Add-toggle-for-sand-duping-fix.patch b/patches/server/0175-Add-toggle-for-sand-duping-fix.patch similarity index 88% rename from patches/unapplied/server/0178-Add-toggle-for-sand-duping-fix.patch rename to patches/server/0175-Add-toggle-for-sand-duping-fix.patch index 1c8f2c424..ff6cbdf4c 100644 --- a/patches/unapplied/server/0178-Add-toggle-for-sand-duping-fix.patch +++ b/patches/server/0175-Add-toggle-for-sand-duping-fix.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add toggle for sand duping fix diff --git a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java -index 18eaccb39a4c81338a8cbebe3de03934913ac2a4..7ad5583f05b608d5a34a33fb77c5bf91f25de9a1 100644 +index 9105418b29c89f092378da11b14e3d324332a2ba..cf99a4c45bd9cdd886bd7b220d8f95dd64d79227 100644 --- a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java +++ b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java @@ -133,7 +133,7 @@ public class FallingBlockEntity extends Entity { @@ -27,10 +27,10 @@ index 18eaccb39a4c81338a8cbebe3de03934913ac2a4..7ad5583f05b608d5a34a33fb77c5bf91 } // Paper end - fix sand duping diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0eb16c3d850a92f3dc99e5daad9c3b6faba97137..3dc0ce7a13238c5545fbf878af86f4c185e8931a 100644 +index 456a3cbadb5dbce0dfdafe4320c5006205a032bd..ce9a971ce1b9657823988395cb37b109a7b3410e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -687,6 +687,11 @@ public class PurpurWorldConfig { +@@ -683,6 +683,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/unapplied/server/0179-Add-toggle-for-end-portal-safe-teleporting.patch b/patches/server/0176-Add-toggle-for-end-portal-safe-teleporting.patch similarity index 90% rename from patches/unapplied/server/0179-Add-toggle-for-end-portal-safe-teleporting.patch rename to patches/server/0176-Add-toggle-for-end-portal-safe-teleporting.patch index bdfe517bc..682623398 100644 --- a/patches/unapplied/server/0179-Add-toggle-for-end-portal-safe-teleporting.patch +++ b/patches/server/0176-Add-toggle-for-end-portal-safe-teleporting.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add toggle for end portal safe teleporting diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 68be1bb59c7e5176c82ed128be5296a2511212ec..c99d273b8d686872d5699e4490769786951256e1 100644 +index 70625c6337d3a68c27c046115186fbf76196588d..e78d85a313f585ec9c7fe9895402591b7b10d6b9 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3134,7 +3134,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3146,7 +3146,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } this.processPortalCooldown(); @@ -45,10 +45,10 @@ index f80f6da484f4144e743079e5104bf503419074b2..2deddc746e43896584bd65ba8e7971a8 entity.portalWorld = ((ServerLevel)world); entity.portalBlock = pos.immutable(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3dc0ce7a13238c5545fbf878af86f4c185e8931a..5c949339f386f805606e7d8f36785d44d53eb0f3 100644 +index ce9a971ce1b9657823988395cb37b109a7b3410e..db5156b0781cedc56929f73d3183b853b26ff4f7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -635,6 +635,11 @@ public class PurpurWorldConfig { +@@ -631,6 +631,11 @@ public class PurpurWorldConfig { furnaceUseLavaFromUnderneath = getBoolean("blocks.furnace.use-lava-from-underneath", furnaceUseLavaFromUnderneath); } diff --git a/patches/unapplied/server/0180-Make-lightning-rod-range-configurable.patch b/patches/server/0177-Make-lightning-rod-range-configurable.patch similarity index 89% rename from patches/unapplied/server/0180-Make-lightning-rod-range-configurable.patch rename to patches/server/0177-Make-lightning-rod-range-configurable.patch index ded4440c8..12559dc29 100644 --- a/patches/unapplied/server/0180-Make-lightning-rod-range-configurable.patch +++ b/patches/server/0177-Make-lightning-rod-range-configurable.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Make lightning rod range configurable diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 49c412f46854ee877de1721b08629e8a3cd319f9..fea5481c98e4cbcaecb9f4adef35b7340ad0c9b8 100644 +index 5e832faa8b1ff45b0d4e01ab197cadfb2c480452..e759e4c772f5bd296554950ac4251ffcb3e78548 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1136,7 +1136,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1033,7 +1033,7 @@ public class ServerLevel extends Level implements WorldGenLevel { return holder.is(PoiTypes.LIGHTNING_ROD); }, (blockposition1) -> { return blockposition1.getY() == this.getHeight(Heightmap.Types.WORLD_SURFACE, blockposition1.getX(), blockposition1.getZ()) - 1; @@ -18,7 +18,7 @@ index 49c412f46854ee877de1721b08629e8a3cd319f9..fea5481c98e4cbcaecb9f4adef35b734 return optional.map((blockposition1) -> { return blockposition1.above(1); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 2aaa4cff8d02c35bfe194b548027be904e1cf982..6919c6779e54526b7666eb6b21556b7b752bf053 100644 +index cb0125f7aaa514578465d455b2b1fab98d7b13c1..b1450f979efb13a31f96b0638d415f807c5c6a4f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -270,6 +270,7 @@ public class PurpurConfig { diff --git a/patches/unapplied/server/0181-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch b/patches/server/0178-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch similarity index 89% rename from patches/unapplied/server/0181-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch rename to patches/server/0178-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch index ad2fd48d6..6ecd8c1b8 100644 --- a/patches/unapplied/server/0181-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch +++ b/patches/server/0178-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Burp delay, burp after eating food fills hunger bar diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 81ba8875f0077ac1be80533061bcb0e632c13ded..bea9f52a6240794d45128659a62487f48f9f03dd 100644 +index 65c92a2feffd878c12082239b0c41444a0f21d57..e46327725cbdae34b769c8d125594618099cb8b4 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -188,6 +188,7 @@ public abstract class Player extends LivingEntity { +@@ -189,6 +189,7 @@ public abstract class Player extends LivingEntity { public net.kyori.adventure.util.TriState flyingFallDamage = net.kyori.adventure.util.TriState.NOT_SET; // Paper end public int sixRowEnderchestSlotCount = -1; // Purpur @@ -17,7 +17,7 @@ index 81ba8875f0077ac1be80533061bcb0e632c13ded..bea9f52a6240794d45128659a62487f4 // CraftBukkit start public boolean fauxSleeping; -@@ -263,6 +264,12 @@ public abstract class Player extends LivingEntity { +@@ -264,6 +265,12 @@ public abstract class Player extends LivingEntity { @Override public void tick() { @@ -30,7 +30,7 @@ index 81ba8875f0077ac1be80533061bcb0e632c13ded..bea9f52a6240794d45128659a62487f4 this.noPhysics = this.isSpectator(); if (this.isSpectator()) { this.setOnGround(false); -@@ -2380,7 +2387,7 @@ public abstract class Player extends LivingEntity { +@@ -2382,7 +2389,7 @@ public abstract class Player extends LivingEntity { public ItemStack eat(Level world, ItemStack stack) { this.getFoodData().eat(stack.getItem(), stack); this.awardStat(Stats.ITEM_USED.get(stack.getItem())); @@ -55,10 +55,10 @@ index 2038df72f8d7d33d4105de8129628daf21de6f0f..31ec6022b305df0ae02364c916ecf184 public void eat(Item item, ItemStack stack) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5c949339f386f805606e7d8f36785d44d53eb0f3..fb5028401408c4e335e4dde2ba845aa75d1115be 100644 +index db5156b0781cedc56929f73d3183b853b26ff4f7..01463f9279fd69b4afc42d9161a4da0473dc3ed8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -390,6 +390,8 @@ public class PurpurWorldConfig { +@@ -388,6 +388,8 @@ public class PurpurWorldConfig { public boolean playerSleepNearMonsters = false; public boolean playersSkipNight = true; public double playerCriticalDamageMultiplier = 1.5D; @@ -67,7 +67,7 @@ index 5c949339f386f805606e7d8f36785d44d53eb0f3..fb5028401408c4e335e4dde2ba845aa7 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -412,6 +414,8 @@ public class PurpurWorldConfig { +@@ -408,6 +410,8 @@ public class PurpurWorldConfig { playerSleepNearMonsters = getBoolean("gameplay-mechanics.player.sleep-ignore-nearby-mobs", playerSleepNearMonsters); playersSkipNight = getBoolean("gameplay-mechanics.player.can-skip-night", playersSkipNight); playerCriticalDamageMultiplier = getDouble("gameplay-mechanics.player.critical-damage-multiplier", playerCriticalDamageMultiplier); diff --git a/patches/unapplied/server/0182-Allow-player-join-full-server-by-permission.patch b/patches/server/0179-Allow-player-join-full-server-by-permission.patch similarity index 83% rename from patches/unapplied/server/0182-Allow-player-join-full-server-by-permission.patch rename to patches/server/0179-Allow-player-join-full-server-by-permission.patch index a708631be..99f55d8d6 100644 --- a/patches/unapplied/server/0182-Allow-player-join-full-server-by-permission.patch +++ b/patches/server/0179-Allow-player-join-full-server-by-permission.patch @@ -5,11 +5,11 @@ Subject: [PATCH] Allow player join full server by permission diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 9a60fa370f37179a7460b316d26e601197b478c7..43fdebcd107a7ca08b93de1d649b4d5e6acf5e81 100644 +index d711decc32169f662818d8db60d3dd8182efbc00..ad4f678de4aeeb7bb3d624f44dacc2c1d5200b1e 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -749,7 +749,7 @@ public abstract class PlayerList { - event.disallow(PlayerLoginEvent.Result.KICK_BANNED, PaperAdventure.asAdventure(ichatmutablecomponent)); // Paper - Adventure +@@ -736,7 +736,7 @@ public abstract class PlayerList { + event.disallow(PlayerLoginEvent.Result.KICK_BANNED, io.papermc.paper.adventure.PaperAdventure.asAdventure(ichatmutablecomponent)); // Paper - Adventure } else { // return this.players.size() >= this.maxPlayers && !this.canBypassPlayerLimit(gameprofile) ? IChatBaseComponent.translatable("multiplayer.disconnect.server_full") : null; - if (this.players.size() >= this.maxPlayers && !this.canBypassPlayerLimit(gameprofile)) { diff --git a/patches/unapplied/server/0183-Add-portal-waiting-option-permission-bypass.patch b/patches/server/0180-Add-portal-waiting-option-permission-bypass.patch similarity index 85% rename from patches/unapplied/server/0183-Add-portal-waiting-option-permission-bypass.patch rename to patches/server/0180-Add-portal-waiting-option-permission-bypass.patch index 644ade4af..969c8887d 100644 --- a/patches/unapplied/server/0183-Add-portal-waiting-option-permission-bypass.patch +++ b/patches/server/0180-Add-portal-waiting-option-permission-bypass.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add portal waiting option & permission bypass diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index bea9f52a6240794d45128659a62487f48f9f03dd..528aeec3f322ee2094098093e6016e41ff382cf3 100644 +index e46327725cbdae34b769c8d125594618099cb8b4..05c089d6e89cf017998bfab88aa9b2d124bf7f86 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -189,6 +189,7 @@ public abstract class Player extends LivingEntity { +@@ -190,6 +190,7 @@ public abstract class Player extends LivingEntity { // Paper end public int sixRowEnderchestSlotCount = -1; // Purpur public int burpDelay = 0; // Purpur @@ -16,7 +16,7 @@ index bea9f52a6240794d45128659a62487f48f9f03dd..528aeec3f322ee2094098093e6016e41 // CraftBukkit start public boolean fauxSleeping; -@@ -469,7 +470,7 @@ public abstract class Player extends LivingEntity { +@@ -474,7 +475,7 @@ public abstract class Player extends LivingEntity { @Override public int getPortalWaitTime() { @@ -26,7 +26,7 @@ index bea9f52a6240794d45128659a62487f48f9f03dd..528aeec3f322ee2094098093e6016e41 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java -index 5fe9a0985432ac6cdd28a2a138854a24f10e42ba..9163bb797a22daedbc822ecc2ad33683a2d8a022 100644 +index 017e97c1618b8ee4640b36a0ec1b07026047bfc3..cf124ad445fd5e8adb1114aca5113e274d950a4a 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java @@ -266,6 +266,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity { @@ -38,10 +38,10 @@ index 5fe9a0985432ac6cdd28a2a138854a24f10e42ba..9163bb797a22daedbc822ecc2ad33683 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fb5028401408c4e335e4dde2ba845aa75d1115be..1b8d6ad995e7944f4b8c098c8f4df34b8670b859 100644 +index 01463f9279fd69b4afc42d9161a4da0473dc3ed8..3f39347665b1b88a3068b258ec7a6923890961f5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -392,6 +392,8 @@ public class PurpurWorldConfig { +@@ -390,6 +390,8 @@ public class PurpurWorldConfig { public double playerCriticalDamageMultiplier = 1.5D; public int playerBurpDelay = 10; public boolean playerBurpWhenFull = false; @@ -50,7 +50,7 @@ index fb5028401408c4e335e4dde2ba845aa75d1115be..1b8d6ad995e7944f4b8c098c8f4df34b private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -416,6 +418,8 @@ public class PurpurWorldConfig { +@@ -412,6 +414,8 @@ public class PurpurWorldConfig { playerCriticalDamageMultiplier = getDouble("gameplay-mechanics.player.critical-damage-multiplier", playerCriticalDamageMultiplier); playerBurpDelay = getInt("gameplay-mechanics.player.burp-delay", playerBurpDelay); playerBurpWhenFull = getBoolean("gameplay-mechanics.player.burp-when-full", playerBurpWhenFull); diff --git a/patches/unapplied/server/0184-Shulker-spawn-from-bullet-options.patch b/patches/server/0181-Shulker-spawn-from-bullet-options.patch similarity index 92% rename from patches/unapplied/server/0184-Shulker-spawn-from-bullet-options.patch rename to patches/server/0181-Shulker-spawn-from-bullet-options.patch index 9be10ff36..96f17fabf 100644 --- a/patches/unapplied/server/0184-Shulker-spawn-from-bullet-options.patch +++ b/patches/server/0181-Shulker-spawn-from-bullet-options.patch @@ -13,10 +13,10 @@ Subject: [PATCH] Shulker spawn from bullet options (7 - 1) / 5.0 = 1.2 1.0 - 1.2 = -0.2 0% (6 other shulkers) diff --git a/src/main/java/net/minecraft/world/entity/monster/Shulker.java b/src/main/java/net/minecraft/world/entity/monster/Shulker.java -index 27b05a4657ba201096973640d7a8cbabdd69f053..a0b19ffbdb64c40d8b92ed82104dde323b466190 100644 +index 69e1f7d1737a8410ff36d4226c15090e72529658..786fe41cc743817f2ed613969c7eeec9fc001b4b 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Shulker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Shulker.java -@@ -511,12 +511,21 @@ public class Shulker extends AbstractGolem implements VariantHolder getVariant() { @@ -68,10 +68,10 @@ index 88e1c2431d51d8cdc3d555b711e506648225d289..ac8735cc9d127fc1f867b40d4000c033 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1b8d6ad995e7944f4b8c098c8f4df34b8670b859..9da836e7bf5f2ab51eb323b035dfc02ef390cc40 100644 +index 3f39347665b1b88a3068b258ec7a6923890961f5..60f15c3cebdcfde4938d0088b7d5b053af7ecc8e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1930,6 +1930,11 @@ public class PurpurWorldConfig { +@@ -1926,6 +1926,11 @@ public class PurpurWorldConfig { public boolean shulkerControllable = true; public double shulkerMaxHealth = 30.0D; public boolean shulkerTakeDamageFromWater = false; @@ -83,7 +83,7 @@ index 1b8d6ad995e7944f4b8c098c8f4df34b8670b859..9da836e7bf5f2ab51eb323b035dfc02e private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -1941,6 +1946,11 @@ public class PurpurWorldConfig { +@@ -1937,6 +1942,11 @@ public class PurpurWorldConfig { } shulkerMaxHealth = getDouble("mobs.shulker.attributes.max_health", shulkerMaxHealth); shulkerTakeDamageFromWater = getBoolean("mobs.shulker.takes-damage-from-water", shulkerTakeDamageFromWater); diff --git a/patches/unapplied/server/0185-Eating-glow-berries-adds-glow-effect.patch b/patches/server/0182-Eating-glow-berries-adds-glow-effect.patch similarity index 97% rename from patches/unapplied/server/0185-Eating-glow-berries-adds-glow-effect.patch rename to patches/server/0182-Eating-glow-berries-adds-glow-effect.patch index 66613f891..843e97c7d 100644 --- a/patches/unapplied/server/0185-Eating-glow-berries-adds-glow-effect.patch +++ b/patches/server/0182-Eating-glow-berries-adds-glow-effect.patch @@ -18,7 +18,7 @@ index e6f8cb165f7e3da5f0edfc952d14059516de8acf..31f5ed9dd1727eee24804a384817d2b7 public static final Item SOUL_CAMPFIRE = registerBlock(Blocks.SOUL_CAMPFIRE); public static final Item SHROOMLIGHT = registerBlock(Blocks.SHROOMLIGHT); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9da836e7bf5f2ab51eb323b035dfc02ef390cc40..6c8c3272bd1c5f9c2082cdcbf5af2d03ade69517 100644 +index 60f15c3cebdcfde4938d0088b7d5b053af7ecc8e..2e810dafa23b92ba844a53d970c6e2206f8b3819 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -220,6 +220,7 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/server/0186-Option-to-make-drowned-break-doors.patch b/patches/server/0183-Option-to-make-drowned-break-doors.patch similarity index 94% rename from patches/unapplied/server/0186-Option-to-make-drowned-break-doors.patch rename to patches/server/0183-Option-to-make-drowned-break-doors.patch index c450eb4a8..f35fab407 100644 --- a/patches/unapplied/server/0186-Option-to-make-drowned-break-doors.patch +++ b/patches/server/0183-Option-to-make-drowned-break-doors.patch @@ -34,10 +34,10 @@ index 902f831ea001145f73691b96f2fca8245a4fc05a..9346d634dd2b8cb3d89aa7ccf12fec6f @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6c8c3272bd1c5f9c2082cdcbf5af2d03ade69517..32be01402d3966a64dbc0b3f63289638163a1e70 100644 +index 2e810dafa23b92ba844a53d970c6e2206f8b3819..e49cd59e4fc687c9365d722f12948378e29b9327 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1076,6 +1076,7 @@ public class PurpurWorldConfig { +@@ -1072,6 +1072,7 @@ public class PurpurWorldConfig { public double drownedJockeyChance = 0.05D; public boolean drownedJockeyTryExistingChickens = true; public boolean drownedTakeDamageFromWater = false; @@ -45,7 +45,7 @@ index 6c8c3272bd1c5f9c2082cdcbf5af2d03ade69517..32be01402d3966a64dbc0b3f63289638 private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -1091,6 +1092,7 @@ public class PurpurWorldConfig { +@@ -1087,6 +1088,7 @@ public class PurpurWorldConfig { drownedJockeyChance = getDouble("mobs.drowned.jockey.chance", drownedJockeyChance); drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens); drownedTakeDamageFromWater = getBoolean("mobs.drowned.takes-damage-from-water", drownedTakeDamageFromWater); diff --git a/patches/unapplied/server/0187-Configurable-hunger-starvation-damage.patch b/patches/server/0184-Configurable-hunger-starvation-damage.patch similarity index 92% rename from patches/unapplied/server/0187-Configurable-hunger-starvation-damage.patch rename to patches/server/0184-Configurable-hunger-starvation-damage.patch index 70dea8a9b..70fe518bd 100644 --- a/patches/unapplied/server/0187-Configurable-hunger-starvation-damage.patch +++ b/patches/server/0184-Configurable-hunger-starvation-damage.patch @@ -18,10 +18,10 @@ index 31ec6022b305df0ae02364c916ecf18425a0bc36..e54af9ff2a786e919b8261aa27509be9 this.tickTimer = 0; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 32be01402d3966a64dbc0b3f63289638163a1e70..1d7510da470ae85a622f6954027e163e9825f07f 100644 +index e49cd59e4fc687c9365d722f12948378e29b9327..9061a6819cbe7d9da35ff5f8fd8c49bb1128d346 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2587,4 +2587,9 @@ public class PurpurWorldConfig { +@@ -2583,4 +2583,9 @@ public class PurpurWorldConfig { zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); zombifiedPiglinTakeDamageFromWater = getBoolean("mobs.zombified_piglin.takes-damage-from-water", zombifiedPiglinTakeDamageFromWater); } diff --git a/patches/unapplied/server/0188-Enhance-SysoutCatcher.patch b/patches/server/0185-Enhance-SysoutCatcher.patch similarity index 100% rename from patches/unapplied/server/0188-Enhance-SysoutCatcher.patch rename to patches/server/0185-Enhance-SysoutCatcher.patch diff --git a/patches/unapplied/server/0189-Add-uptime-command.patch b/patches/server/0186-Add-uptime-command.patch similarity index 96% rename from patches/unapplied/server/0189-Add-uptime-command.patch rename to patches/server/0186-Add-uptime-command.patch index ffd3fa330..e1a5984bc 100644 --- a/patches/unapplied/server/0189-Add-uptime-command.patch +++ b/patches/server/0186-Add-uptime-command.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add uptime command diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index 4e721dfca7559620d8ce65a6703f2089a839f4a0..7aae9e3c60ba15b8dcd8174a4d70866edebb6cca 100644 +index e1887523b0b6a0479544385932f54ab1de0295ae..e254f7c498c5a1608afe130b2dd4d3d037069f25 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java -@@ -227,6 +227,7 @@ public class Commands { +@@ -233,6 +233,7 @@ public class Commands { org.purpurmc.purpur.command.CreditsCommand.register(this.dispatcher); // Purpur org.purpurmc.purpur.command.DemoCommand.register(this.dispatcher); // Purpur org.purpurmc.purpur.command.PingCommand.register(this.dispatcher); // Purpur @@ -17,10 +17,10 @@ index 4e721dfca7559620d8ce65a6703f2089a839f4a0..7aae9e3c60ba15b8dcd8174a4d70866e } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index d87e3a201d0fddd4c212de1de98ca2870e481149..49286716235f3bd49cbc42ef693daafba746f930 100644 +index 43bd000ff6e91e23198799f74fd0895f0a02fcc1..caaa154082fef69c6bf3ff6101242de5b037c583 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -293,6 +293,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop viewDistances = new java.util.concurrent.atomic.AtomicReference<>(new io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances(-1, -1, -1)); - public io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader; @@ -562,6 +563,7 @@ public class ServerPlayer extends Player { } @@ -44,7 +44,7 @@ index 3edbc1da87608090aa3e764736716cebbfe0c3dd..cc313235863910b4978f96d594abff0a } // CraftBukkit start - World fallback code, either respawn location or global spawn -@@ -2819,5 +2822,13 @@ public class ServerPlayer extends Player { +@@ -2792,5 +2795,13 @@ public class ServerPlayer extends Player { public void tpsBar(boolean tpsBar) { this.tpsBar = tpsBar; } @@ -89,7 +89,7 @@ index 9a9c4826dab3de9e63ba984f8b2e1b3b7aa5a98b..62fa79eccbb6f679c0460a6dfd457c40 hideHiddenPlayersFromEntitySelector = getBoolean("settings.command.hide-hidden-players-from-entity-selector", hideHiddenPlayersFromEntitySelector); uptimeFormat = getString("settings.command.uptime.format", uptimeFormat); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7e2e60fd2fbe7181bfbd1aeacdb0b4b295c0d9c7..29b070ecd5d6d08f3c6127e499ed90e53112624d 100644 +index 0319fa5cb86e40520228bbdbd41e51c38cb4ffd6..3d5d4d444aa4e7e7226c6296677d3cc630af54e2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -222,6 +222,7 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/server/0199-Toggle-for-kinetic-damage.patch b/patches/server/0196-Toggle-for-kinetic-damage.patch similarity index 89% rename from patches/unapplied/server/0199-Toggle-for-kinetic-damage.patch rename to patches/server/0196-Toggle-for-kinetic-damage.patch index 8ab29dfc2..88c3abf9c 100644 --- a/patches/unapplied/server/0199-Toggle-for-kinetic-damage.patch +++ b/patches/server/0196-Toggle-for-kinetic-damage.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Toggle for kinetic damage diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 4c5a0644918dc912feef17470d7fcfd1a3b14d88..84d24e624bb3e81df174d5d6de0af3ab3967c4da 100644 +index 7e4d059882a804edc7d6536d4ee409c1822c5b2a..7c91aa226517d9d574f102e3e4976904b419e657 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -2894,6 +2894,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2903,6 +2903,7 @@ public abstract class LivingEntity extends Entity implements Attackable { if (f3 > 0.0F) { this.playSound(this.getFallDamageSound((int) f3), 1.0F, 1.0F); @@ -17,7 +17,7 @@ index 4c5a0644918dc912feef17470d7fcfd1a3b14d88..84d24e624bb3e81df174d5d6de0af3ab } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 29b070ecd5d6d08f3c6127e499ed90e53112624d..08ad56494ce3f99b9f3a2b61d3033aec94e9db7e 100644 +index 3d5d4d444aa4e7e7226c6296677d3cc630af54e2..45b89ffe9b7a61d9c4d0508d533131d54e363549 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -182,12 +182,14 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/server/0200-Add-Option-for-disable-observer-clocks.patch b/patches/server/0197-Add-Option-for-disable-observer-clocks.patch similarity index 95% rename from patches/unapplied/server/0200-Add-Option-for-disable-observer-clocks.patch rename to patches/server/0197-Add-Option-for-disable-observer-clocks.patch index b2aceb5a0..282f377d3 100644 --- a/patches/unapplied/server/0200-Add-Option-for-disable-observer-clocks.patch +++ b/patches/server/0197-Add-Option-for-disable-observer-clocks.patch @@ -18,7 +18,7 @@ index 7b45d6b9a005036ca5051d089a7be792eb87012f..8806c97ecc6bdd8a64c2d82bb2f58f46 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 08ad56494ce3f99b9f3a2b61d3033aec94e9db7e..d13188a1207352a6ee5ff9c9ed633e7f834a81c9 100644 +index 45b89ffe9b7a61d9c4d0508d533131d54e363549..8cece9543a87ac86a8320fef4a23b39dbc76ab5c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -369,6 +369,11 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/server/0176-Config-MobEffect-by-world.patch b/patches/unapplied/server/0176-Config-MobEffect-by-world.patch deleted file mode 100644 index ff3d92622..000000000 --- a/patches/unapplied/server/0176-Config-MobEffect-by-world.patch +++ /dev/null @@ -1,67 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: DoctaEnkoda -Date: Mon, 31 May 2021 11:06:54 +0200 -Subject: [PATCH] Config MobEffect by world - - -diff --git a/src/main/java/net/minecraft/world/effect/MobEffect.java b/src/main/java/net/minecraft/world/effect/MobEffect.java -index 53cc6befb752affcfec65e18365f6d369448d407..01850fc596a85974287ff6750427186d21acac41 100644 ---- a/src/main/java/net/minecraft/world/effect/MobEffect.java -+++ b/src/main/java/net/minecraft/world/effect/MobEffect.java -@@ -59,16 +59,16 @@ public class MobEffect { - public void applyEffectTick(LivingEntity entity, int amplifier) { - if (this == MobEffects.REGENERATION) { - if (entity.getHealth() < entity.getMaxHealth()) { -- entity.heal(1.0F, RegainReason.MAGIC_REGEN); // CraftBukkit -+ entity.heal(entity.level().purpurConfig.entityHealthRegenAmount, RegainReason.MAGIC_REGEN); // CraftBukkit // Purpur - } - } else if (this == MobEffects.POISON) { -- if (entity.getHealth() > 1.0F) { -- entity.hurt(entity.damageSources().poison, 1.0F); // CraftBukkit - DamageSource.MAGIC -> CraftEventFactory.POISON -+ if (entity.getHealth() > entity.level().purpurConfig.entityMinimalHealthPoison) { // Purpur -+ entity.hurt(entity.damageSources().poison, entity.level().purpurConfig.entityPoisonDegenerationAmount); // CraftBukkit - DamageSource.MAGIC -> CraftEventFactory.POISON // Purpur - } - } else if (this == MobEffects.WITHER) { -- entity.hurt(entity.damageSources().wither(), 1.0F); -+ entity.hurt(entity.damageSources().wither(), entity.level().purpurConfig.entityWitherDegenerationAmount); // Purpur - } else if (this == MobEffects.HUNGER && entity instanceof Player) { -- ((Player) entity).causeFoodExhaustion(0.005F * (float) (amplifier + 1), org.bukkit.event.entity.EntityExhaustionEvent.ExhaustionReason.HUNGER_EFFECT); // CraftBukkit - EntityExhaustionEvent -+ ((Player) entity).causeFoodExhaustion(entity.level().purpurConfig.humanHungerExhaustionAmount * (float) (amplifier + 1), org.bukkit.event.entity.EntityExhaustionEvent.ExhaustionReason.HUNGER_EFFECT); // CraftBukkit - EntityExhaustionEvent // Purpur - } else if (this == MobEffects.SATURATION && entity instanceof Player) { - if (!entity.level().isClientSide) { - // CraftBukkit start -@@ -76,7 +76,7 @@ public class MobEffect { - int oldFoodLevel = entityhuman.getFoodData().foodLevel; - org.bukkit.event.entity.FoodLevelChangeEvent event = CraftEventFactory.callFoodLevelChangeEvent(entityhuman, amplifier + 1 + oldFoodLevel); - if (!event.isCancelled()) { -- entityhuman.getFoodData().eat(event.getFoodLevel() - oldFoodLevel, 1.0F); -+ entityhuman.getFoodData().eat(event.getFoodLevel() - oldFoodLevel, entity.level().purpurConfig.humanSaturationRegenAmount); // Purpur - } - - ((CraftPlayer) entityhuman.getBukkitEntity()).sendHealthUpdate(); -diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index bd485bc18e7012f14a7f85cda26f8a1ec2b0cca0..f95596f39021e3da3155c3175a6fcec8c6eb7ff9 100644 ---- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -331,6 +331,21 @@ public class PurpurWorldConfig { - poweredRailBoostModifier = getDouble("gameplay-mechanics.minecart.powered-rail.boost-modifier", poweredRailBoostModifier); - } - -+ public float entityHealthRegenAmount = 1.0F; -+ public float entityMinimalHealthPoison = 1.0F; -+ public float entityPoisonDegenerationAmount = 1.0F; -+ public float entityWitherDegenerationAmount = 1.0F; -+ public float humanHungerExhaustionAmount = 0.005F; -+ public float humanSaturationRegenAmount = 1.0F; -+ private void mobEffectSettings() { -+ entityHealthRegenAmount = (float) getDouble("gameplay-mechanics.mob-effects.health-regen-amount", entityHealthRegenAmount); -+ entityMinimalHealthPoison = (float) getDouble("gameplay-mechanics.mob-effects.minimal-health-poison-amount", entityMinimalHealthPoison); -+ entityPoisonDegenerationAmount = (float) getDouble("gameplay-mechanics.mob-effects.poison-degeneration-amount", entityPoisonDegenerationAmount); -+ entityWitherDegenerationAmount = (float) getDouble("gameplay-mechanics.mob-effects.wither-degeneration-amount", entityWitherDegenerationAmount); -+ humanHungerExhaustionAmount = (float) getDouble("gameplay-mechanics.mob-effects.hunger-exhaustion-amount", humanHungerExhaustionAmount); -+ humanSaturationRegenAmount = (float) getDouble("gameplay-mechanics.mob-effects.saturation-regen-amount", humanSaturationRegenAmount); -+ } -+ - public boolean catSpawning; - public boolean patrolSpawning; - public boolean phantomSpawning;