diff --git a/patches/unapplied-server/0083-Entities-can-use-portals-configuration.patch b/patches/dropped-server/0083-Entities-can-use-portals-configuration.patch similarity index 100% rename from patches/unapplied-server/0083-Entities-can-use-portals-configuration.patch rename to patches/dropped-server/0083-Entities-can-use-portals-configuration.patch diff --git a/patches/unapplied-server/0094-Allow-infinite-and-mending-enchantments-together.patch b/patches/dropped-server/0094-Allow-infinite-and-mending-enchantments-together.patch similarity index 100% rename from patches/unapplied-server/0094-Allow-infinite-and-mending-enchantments-together.patch rename to patches/dropped-server/0094-Allow-infinite-and-mending-enchantments-together.patch diff --git a/patches/unapplied-server/0051-Configurable-void-damage-height-and-damage.patch b/patches/server/0049-Configurable-void-damage-height-and-damage.patch similarity index 89% rename from patches/unapplied-server/0051-Configurable-void-damage-height-and-damage.patch rename to patches/server/0049-Configurable-void-damage-height-and-damage.patch index 49ed2e380..66d2498be 100644 --- a/patches/unapplied-server/0051-Configurable-void-damage-height-and-damage.patch +++ b/patches/server/0049-Configurable-void-damage-height-and-damage.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable void damage height and damage diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 8feace82105dccd2db3872a7e735ce376397abc8..90788e4ffdc6f38675aa859e3b2ff185046ac3fc 100644 +index 55d5ab1582ea9f2bbc9c053d981da456e93c3264..83ea9c2456ccf3d92efb2361768a65f2a1bbf745 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -947,7 +947,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -808,7 +808,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess public void checkBelowWorld() { // Paper start - Configurable nether ceiling damage @@ -18,7 +18,7 @@ index 8feace82105dccd2db3872a7e735ce376397abc8..90788e4ffdc6f38675aa859e3b2ff185 && (!(this instanceof Player player) || !player.getAbilities().invulnerable))) { // Paper end - Configurable nether ceiling damage diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 6bdb919fa0977e8fffab63f556d5409db5d56e8f..1ebf980eaf233f828dda11e5ec1a12e604f08a96 100644 +index fa30e935c939c3aa7dab562a25aefb8370155da3..f35663c26b17a5c89cd4dbb3c9d1a439018b3b07 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -2576,7 +2576,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -31,7 +31,7 @@ index 6bdb919fa0977e8fffab63f556d5409db5d56e8f..1ebf980eaf233f828dda11e5ec1a12e6 protected void updateSwingTime() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 66e12893bb9d8984a8cd2916834c5e86058f47bb..03c35e455b405517114ffc043732359c112e343f 100644 +index ea0268f2b8a3fc7c1b25c8d80e98096cc607031e..d9b3dacbb61027437dae8a2afec396cd9b484f6e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -98,10 +98,14 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied-server/0052-Add-canSaveToDisk-to-Entity.patch b/patches/server/0050-Add-canSaveToDisk-to-Entity.patch similarity index 70% rename from patches/unapplied-server/0052-Add-canSaveToDisk-to-Entity.patch rename to patches/server/0050-Add-canSaveToDisk-to-Entity.patch index f6bac21c2..9202b1e88 100644 --- a/patches/unapplied-server/0052-Add-canSaveToDisk-to-Entity.patch +++ b/patches/server/0050-Add-canSaveToDisk-to-Entity.patch @@ -5,25 +5,26 @@ Subject: [PATCH] Add canSaveToDisk to Entity diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index e4e240b227fbde9dee03d7a3fa8364e3b129da88..9b653134ad71a6d3ff22dfaa15390e3cd7b4453a 100644 +index 83ea9c2456ccf3d92efb2361768a65f2a1bbf745..b0c65f5a6cf79f22603d3dd93fffac435686b41c 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -557,6 +557,10 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess - return false; +@@ -457,6 +457,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess + return this.dimensions.makeBoundingBox(x, y, z); } - + // Paper end ++ // Purpur start + public boolean canSaveToDisk() { + return true; + } -+ - public final boolean hardCollides() { - return this.hardCollides; - } ++ // Purpur end + + public Entity(EntityType type, Level world) { + this.id = Entity.ENTITY_COUNTER.incrementAndGet(); diff --git a/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java b/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java -index 4117260538e47c978ea31c76f439d43369ebedfb..c753f715710ec4bb8337e035ac5a4c11371a84a0 100644 +index 63f48841c849ff49d9d43efc5de8952c5a9bba3a..e472df057d087fe46bd40b798c050ed6e38a283c 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java +++ b/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java -@@ -117,6 +117,11 @@ public class WitherSkull extends AbstractHurtingProjectile { +@@ -121,6 +121,11 @@ public class WitherSkull extends AbstractHurtingProjectile { // do not hit rider return target != this.getRider() && super.canHitEntity(target); } @@ -36,17 +37,17 @@ index 4117260538e47c978ea31c76f439d43369ebedfb..c753f715710ec4bb8337e035ac5a4c11 @Override diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java b/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java -index bee39dee1b96023c907407877aedf3aafaf5e1b8..5b6bc200381a486c99061f9f5b7121c2c355b477 100644 +index 36b8a9ac385e43f3212aca1b1f5bd7115bd00431..8097ff9264b94caad0b4727f2c2d93870c21ba2c 100644 --- a/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java +++ b/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java -@@ -107,6 +107,7 @@ public class EntityStorage implements EntityPersistentStorage { - ListTag listTag = new ListTag(); - final java.util.Map, Integer> savedEntityCounts = new java.util.HashMap<>(); // Paper - Entity load/save limit per chunk - entities.forEach((entity) -> { // diff here: use entities parameter -+ if (!entity.canSaveToDisk()) return; // Purpur - // Paper start - Entity load/save limit per chunk - final EntityType entityType = entity.getType(); - final int saveLimit = level.paperConfig().chunks.entityPerChunkSaveLimit.getOrDefault(entityType, -1); +@@ -94,6 +94,7 @@ public class EntityStorage implements EntityPersistentStorage { + ListTag listTag = new ListTag(); + dataList.getEntities().forEach(entity -> { + CompoundTag compoundTagx = new CompoundTag(); ++ if (!entity.canSaveToDisk()) return; // Purpur + if (entity.save(compoundTagx)) { + listTag.add(compoundTagx); + } diff --git a/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java b/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java index 89c476c740b4efb4f44c1dcd384b908626d96780..f25abee6dbf99c8d08f8e09db02b41df86115faa 100644 --- a/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java diff --git a/patches/unapplied-server/0053-Dispenser-curse-of-binding-protection.patch b/patches/server/0051-Dispenser-curse-of-binding-protection.patch similarity index 76% rename from patches/unapplied-server/0053-Dispenser-curse-of-binding-protection.patch rename to patches/server/0051-Dispenser-curse-of-binding-protection.patch index 903c7f4ef..931e92db3 100644 --- a/patches/unapplied-server/0053-Dispenser-curse-of-binding-protection.patch +++ b/patches/server/0051-Dispenser-curse-of-binding-protection.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Dispenser curse of binding protection diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index a0e0d3ca25bf047a5520a3ed47f93ab97377b8b4..49422ea596125ee669bdc66d88f084b692acaca7 100644 +index ec3e0e076cb9f2b5160988ab78d6ab7b33f9490f..cc326c3b6a78755b7bc17ebf864cc9c99ec38c1a 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -1309,6 +1309,12 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti +@@ -1294,6 +1294,12 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab } @@ -22,20 +22,20 @@ index a0e0d3ca25bf047a5520a3ed47f93ab97377b8b4..49422ea596125ee669bdc66d88f084b6 public static Item getEquipmentForSlot(EquipmentSlot equipmentSlot, int equipmentLevel) { switch (equipmentSlot) { diff --git a/src/main/java/net/minecraft/world/item/ArmorItem.java b/src/main/java/net/minecraft/world/item/ArmorItem.java -index 786e4a8700cb84b16dd9b8892a0d1d5803924d81..b108ca4c7900ccf6a14ebea01c21c103459054f8 100644 +index 647a4601deace52f8d855f512a73671f82b4762a..d6bdd6313e0e5be3ddfa04f40cf035e72e09f1ea 100644 --- a/src/main/java/net/minecraft/world/item/ArmorItem.java +++ b/src/main/java/net/minecraft/world/item/ArmorItem.java -@@ -69,7 +69,7 @@ public class ArmorItem extends Item implements Equipable { +@@ -60,7 +60,7 @@ public class ArmorItem extends Item implements Equipable { return false; } else { LivingEntity entityliving = (LivingEntity) list.get(0); -- EquipmentSlot enumitemslot = Mob.getEquipmentSlotForItem(armor); -+ EquipmentSlot enumitemslot = pointer.level().purpurConfig.dispenserApplyCursedArmor ? Mob.getEquipmentSlotForItem(armor) : Mob.getSlotForDispenser(armor); if (enumitemslot == null) return false; // Purpur +- EquipmentSlot enumitemslot = entityliving.getEquipmentSlotForItem(armor); ++ EquipmentSlot enumitemslot = pointer.level().purpurConfig.dispenserApplyCursedArmor ? entityliving.getEquipmentSlotForItem(armor) : Mob.getSlotForDispenser(armor); if (enumitemslot == null) return false; // Purpur ItemStack itemstack1 = armor.copyWithCount(1); // Paper - shrink below and single item in event // CraftBukkit start Level world = pointer.level(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 03c35e455b405517114ffc043732359c112e343f..27c1f09be7d664073263a02a8854ff1e8c6f9ab1 100644 +index d9b3dacbb61027437dae8a2afec396cd9b484f6e..55b8f6d46637b56a6f175649a5fdfbe3154b6323 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -224,6 +224,11 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied-server/0054-Add-option-for-boats-to-eject-players-on-land.patch b/patches/server/0052-Add-option-for-boats-to-eject-players-on-land.patch similarity index 87% rename from patches/unapplied-server/0054-Add-option-for-boats-to-eject-players-on-land.patch rename to patches/server/0052-Add-option-for-boats-to-eject-players-on-land.patch index dfbc74be0..5f0d77abe 100644 --- a/patches/unapplied-server/0054-Add-option-for-boats-to-eject-players-on-land.patch +++ b/patches/server/0052-Add-option-for-boats-to-eject-players-on-land.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add option for boats to eject players on land diff --git a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java -index b068cff9b5aa457d65b679529956e8210296d799..0b23e05f936cab7a9867828c2d69417cfde1d2ce 100644 +index 907f751c859855484151fb5d607acee2f2a35076..4e1b2d65182f7d562a8470449b9f7c2ef6ab6445 100644 --- a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java +++ b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java -@@ -514,6 +514,7 @@ public class Boat extends VehicleEntity implements VariantHolder { +@@ -543,6 +543,7 @@ public class Boat extends VehicleEntity implements Leashable, VariantHolder 0.0F) { this.landFriction = f; @@ -17,7 +17,7 @@ index b068cff9b5aa457d65b679529956e8210296d799..0b23e05f936cab7a9867828c2d69417c } else { return Boat.Status.IN_AIR; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 27c1f09be7d664073263a02a8854ff1e8c6f9ab1..76c1cfc35b598eab2ca27656feeb17f79dde7e00 100644 +index 55b8f6d46637b56a6f175649a5fdfbe3154b6323..e6333a4177e5e3bde40fa66d57299e676b8aebef 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -95,12 +95,14 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied-server/0055-Mending-mends-most-damages-equipment-first.patch b/patches/server/0053-Mending-mends-most-damages-equipment-first.patch similarity index 65% rename from patches/unapplied-server/0055-Mending-mends-most-damages-equipment-first.patch rename to patches/server/0053-Mending-mends-most-damages-equipment-first.patch index 2f5754062..f080fefdb 100644 --- a/patches/unapplied-server/0055-Mending-mends-most-damages-equipment-first.patch +++ b/patches/server/0053-Mending-mends-most-damages-equipment-first.patch @@ -5,23 +5,31 @@ Subject: [PATCH] Mending mends most damages equipment first diff --git a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java -index 46d8bcad1545953757659870901cbbdf3340bc15..45fda4c03c6fe586d26638f0a2a1d26db807e52c 100644 +index 15844971ce2cca8c679ad3aaa2dfe160e6d0b564..6598a737db11fb0c7e7a95b9bbfaabd75895cbdd 100644 --- a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java +++ b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java -@@ -344,7 +344,7 @@ public class ExperienceOrb extends Entity { +@@ -20,6 +20,7 @@ import net.minecraft.world.item.ItemStack; + import net.minecraft.world.item.enchantment.EnchantedItemInUse; + import net.minecraft.world.item.enchantment.EnchantmentEffectComponents; + import net.minecraft.world.item.enchantment.EnchantmentHelper; ++import net.minecraft.world.item.enchantment.Enchantments; + import net.minecraft.world.level.Level; + import net.minecraft.world.level.entity.EntityTypeTest; + import net.minecraft.world.phys.AABB; +@@ -347,7 +348,7 @@ public class ExperienceOrb extends Entity { } - private int repairPlayerItems(Player player, int amount) { -- Entry entry = EnchantmentHelper.getRandomItemWith(Enchantments.MENDING, player, ItemStack::isDamaged); -+ Entry entry = level().purpurConfig.useBetterMending ? EnchantmentHelper.getMostDamagedEquipment(Enchantments.MENDING, player) : EnchantmentHelper.getRandomItemWith(Enchantments.MENDING, player, ItemStack::isDamaged); // Purpur + private int repairPlayerItems(ServerPlayer player, int amount) { +- Optional optional = EnchantmentHelper.getRandomItemWith(EnchantmentEffectComponents.REPAIR_WITH_XP, player, ItemStack::isDamaged); ++ Optional optional = level().purpurConfig.useBetterMending ? EnchantmentHelper.getMostDamagedEquipment(Enchantments.MENDING, player) : EnchantmentHelper.getRandomItemWith(EnchantmentEffectComponents.REPAIR_WITH_XP, player, ItemStack::isDamaged); // Purpur - if (entry != null) { - ItemStack itemstack = (ItemStack) entry.getValue(); + if (optional.isPresent()) { + ItemStack itemstack = ((EnchantedItemInUse) optional.get()).itemStack(); diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 58c38bc4361ddf24716f326b0c6fc626d434756e..6ab9bc3da937f259b4d5b4ef69c011170b1f6783 100644 +index 86197725f0f2ac1e650297ae7a79907578e0e8f1..5e86f7d7d7594bd82c50db6d17763a50dc58e7a5 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -638,6 +638,16 @@ public final class ItemStack implements DataComponentHolder { +@@ -643,6 +643,16 @@ public final class ItemStack implements DataComponentHolder { return this.isDamageableItem() && this.getDamageValue() > 0; } @@ -39,11 +47,19 @@ index 58c38bc4361ddf24716f326b0c6fc626d434756e..6ab9bc3da937f259b4d5b4ef69c01117 return Mth.clamp((Integer) this.getOrDefault(DataComponents.DAMAGE, 0), 0, this.getMaxDamage()); } diff --git a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java -index d2f0463b0e74983eb2e3dfca9a268e9502b86257..6d0363cec691996be416ab22ef9d825196399158 100644 +index fce49b17905ab97e691aa8499a5dfed67adf0c40..5ef8f69a4271c0a70380b5bd321735ff3e2b8cdd 100644 --- a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java +++ b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java -@@ -237,6 +237,29 @@ public class EnchantmentHelper { - return getItemEnchantmentLevel(Enchantments.CHANNELING, stack) > 0; +@@ -6,6 +6,7 @@ import it.unimi.dsi.fastutil.objects.Object2IntMap.Entry; + import java.util.ArrayList; + import java.util.Collection; + import java.util.List; ++import java.util.Map; + import java.util.Optional; + import java.util.function.BiConsumer; + import java.util.function.Consumer; +@@ -380,6 +381,29 @@ public class EnchantmentHelper { + return false; } + // Purpur start @@ -69,11 +85,11 @@ index d2f0463b0e74983eb2e3dfca9a268e9502b86257..6d0363cec691996be416ab22ef9d8251 + } + // Purpur end + - @Nullable - public static java.util.Map.Entry getRandomItemWith(Enchantment enchantment, LivingEntity entity) { - return getRandomItemWith(enchantment, entity, stack -> true); + public static boolean has(ItemStack stack, DataComponentType componentType) { + MutableBoolean mutableBoolean = new MutableBoolean(false); + runIterationOnItem(stack, (enchantment, level) -> { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 76c1cfc35b598eab2ca27656feeb17f79dde7e00..6705d722e1abe678a5cb90503904dc7888bf55ee 100644 +index e6333a4177e5e3bde40fa66d57299e676b8aebef..69df43378e11579715fac8afbed3207892d69242 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -95,6 +95,7 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied-server/0056-Add-5-second-tps-average-in-tps.patch b/patches/server/0054-Add-5-second-tps-average-in-tps.patch similarity index 93% rename from patches/unapplied-server/0056-Add-5-second-tps-average-in-tps.patch rename to patches/server/0054-Add-5-second-tps-average-in-tps.patch index da28a5f4e..45dc4af23 100644 --- a/patches/unapplied-server/0056-Add-5-second-tps-average-in-tps.patch +++ b/patches/server/0054-Add-5-second-tps-average-in-tps.patch @@ -18,10 +18,10 @@ index 039a86034928a5eb7aaa2d7ca76a7bddcca346bd..308f67d0616e2d6bb135258f1fda53cc } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index e2c0857e9628cca3aeef99c8e351281c7777415a..f98b2cd4e0b59fdd64934a1b83403d6124e4a97f 100644 +index 75ef804dda665c19e54be32ad28370c5d7158902..0ce81b0d621d2914903c4325f2e602a246544890 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -307,7 +307,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0) { + int originalDamage = amount; // Paper - Expand PlayerItemDamageEvent ++ // (getItem() == Items.ELYTRA && player != null && player.level().purpurConfig.elytraIgnoreUnbreaking) ? 0 : // Purpur + amount = EnchantmentHelper.processDurabilityChange(world, this, amount); + // CraftBukkit start + if (player instanceof ServerPlayer serverPlayer) { // Paper - Add EntityDamageItemEvent +@@ -740,6 +741,12 @@ public final class ItemStack implements DataComponentHolder { + } - if (amount > 0) { -- j = EnchantmentHelper.getItemEnchantmentLevel(Enchantments.UNBREAKING, this); -+ j = (getItem() == Items.ELYTRA && player != null && player.level().purpurConfig.elytraIgnoreUnbreaking) ? 0 : EnchantmentHelper.getItemEnchantmentLevel(Enchantments.UNBREAKING, this); - int k = 0; - - for (int l = 0; j > 0 && l < amount; ++l) { -@@ -748,6 +748,12 @@ public final class ItemStack implements DataComponentHolder { - this.hurtAndBreak(amount, randomsource, entity, () -> { // Paper - Add EntityDamageItemEvent - if (slot != null) entity.broadcastBreakEvent(slot); // Paper - ItemStack damage API - slot is nullable - Item item = this.getItem(); -+ // Purpur start -+ if (item == Items.ELYTRA) { -+ setDamageValue(getMaxDamage() - 1); -+ return; -+ } + this.hurtAndBreak(amount, worldserver, entity, (item) -> { // Paper - Add EntityDamageItemEvent ++ // Purpur start - TODO: 1-21: check later ++ // if (item == Items.ELYTRA) { ++ // setDamageValue(getMaxDamage() - 1); ++ // return; ++ // } + // Purpur end // CraftBukkit start - Check for item breaking if (this.count == 1 && entity instanceof net.minecraft.world.entity.player.Player) { org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerItemBreakEvent((net.minecraft.world.entity.player.Player) entity, this); diff --git a/src/main/java/net/minecraft/world/item/TridentItem.java b/src/main/java/net/minecraft/world/item/TridentItem.java -index 47de500fddb0716d142f8f5876a82a95afaa06fa..b094f4ec513194e10442156d8f7f2205da2384ac 100644 +index f1b2d388a1a40a1d909a2e726f32d6c15e1eb0eb..4934bae61114b49a9f8d0ed044fbb881210df32a 100644 --- a/src/main/java/net/minecraft/world/item/TridentItem.java +++ b/src/main/java/net/minecraft/world/item/TridentItem.java -@@ -123,6 +123,14 @@ public class TridentItem extends Item implements ProjectileItem { - f3 *= f6 / f5; - f4 *= f6 / f5; - org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerRiptideEvent(entityhuman, stack, f2, f3, f4); // CraftBukkit +@@ -127,6 +127,14 @@ public class TridentItem extends Item implements ProjectileItem { + f4 *= f / f6; + f5 *= f / f6; + org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerRiptideEvent(entityhuman, stack, f3, f4, f5); // CraftBukkit + -+ // Purpur start -+ ItemStack chestItem = entityhuman.getItemBySlot(EquipmentSlot.CHEST); -+ if (chestItem.getItem() == Items.ELYTRA && world.purpurConfig.elytraDamagePerTridentBoost > 0) { -+ chestItem.hurtAndBreak(world.purpurConfig.elytraDamagePerTridentBoost, entityhuman, EquipmentSlot.CHEST); -+ } -+ // Purpur end ++ // Purpur start ++ ItemStack chestItem = entityhuman.getItemBySlot(EquipmentSlot.CHEST); ++ if (chestItem.getItem() == Items.ELYTRA && world.purpurConfig.elytraDamagePerTridentBoost > 0) { ++ chestItem.hurtAndBreak(world.purpurConfig.elytraDamagePerTridentBoost, entityhuman, EquipmentSlot.CHEST); ++ } ++ // Purpur end + - entityhuman.push((double) f2, (double) f3, (double) f4); - entityhuman.startAutoSpinAttack(20); - if (entityhuman.onGround()) { + entityhuman.push((double) f3, (double) f4, (double) f5); + entityhuman.startAutoSpinAttack(20, 8.0F, stack); + if (entityhuman.onGround()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6705d722e1abe678a5cb90503904dc7888bf55ee..88aabe09118cbbad3add3cee44e237580294f685 100644 +index 69df43378e11579715fac8afbed3207892d69242..b1f8030868c938525916011b8a207058b702d4b8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -112,6 +112,19 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied-server/0058-Item-entity-immunities.patch b/patches/server/0056-Item-entity-immunities.patch similarity index 94% rename from patches/unapplied-server/0058-Item-entity-immunities.patch rename to patches/server/0056-Item-entity-immunities.patch index c45cb2d67..8f7f8edcc 100644 --- a/patches/unapplied-server/0058-Item-entity-immunities.patch +++ b/patches/server/0056-Item-entity-immunities.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Item entity immunities diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java -index 4f103f731623a8570238a6867fda1c5f83fca4e4..39e7dcf3c92c9203c190782be401c00c010b8aeb 100644 +index 1d849ce4e2c85f149af25318b8ffb6dcef6c6788..b38207981751d96a7e769f7afb352a4540b18440 100644 --- a/src/main/java/net/minecraft/server/level/ServerEntity.java +++ b/src/main/java/net/minecraft/server/level/ServerEntity.java @@ -77,7 +77,7 @@ public class ServerEntity { @@ -18,10 +18,10 @@ index 4f103f731623a8570238a6867fda1c5f83fca4e4..39e7dcf3c92c9203c190782be401c00c public ServerEntity(ServerLevel worldserver, Entity entity, int i, boolean flag, Consumer> consumer, Set trackedPlayers) { this.trackedPlayers = trackedPlayers; diff --git a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java -index 8fd3845c4965843be9c37498760d93f1ebdff541..7dae2a7c759fc3e004f806c59e083f52c3a460b2 100644 +index ea0d9335446b20073b9aafb9de453097355db79c..499646ad26d148953abf241d90e053870fedb708 100644 --- a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java +++ b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java -@@ -63,6 +63,12 @@ public class ItemEntity extends Entity implements TraceableEntity { +@@ -64,6 +64,12 @@ public class ItemEntity extends Entity implements TraceableEntity { public boolean canMobPickup = true; // Paper - Item#canEntityPickup private int despawnRate = -1; // Paper - Alternative item-despawn-rate public net.kyori.adventure.util.TriState frictionState = net.kyori.adventure.util.TriState.NOT_SET; // Paper - Friction API @@ -34,7 +34,7 @@ index 8fd3845c4965843be9c37498760d93f1ebdff541..7dae2a7c759fc3e004f806c59e083f52 public ItemEntity(EntityType type, Level world) { super(type, world); -@@ -371,7 +377,16 @@ public class ItemEntity extends Entity implements TraceableEntity { +@@ -372,7 +378,16 @@ public class ItemEntity extends Entity implements TraceableEntity { @Override public boolean hurt(DamageSource source, float amount) { @@ -52,7 +52,7 @@ index 8fd3845c4965843be9c37498760d93f1ebdff541..7dae2a7c759fc3e004f806c59e083f52 return false; } else if (!this.getItem().isEmpty() && this.getItem().is(Items.NETHER_STAR) && source.is(DamageTypeTags.IS_EXPLOSION)) { return false; -@@ -579,6 +594,12 @@ public class ItemEntity extends Entity implements TraceableEntity { +@@ -580,6 +595,12 @@ public class ItemEntity extends Entity implements TraceableEntity { public void setItem(ItemStack stack) { this.getEntityData().set(ItemEntity.DATA_ITEM, stack); this.despawnRate = this.level().paperConfig().entities.spawning.altItemDespawnRate.enabled ? this.level().paperConfig().entities.spawning.altItemDespawnRate.items.getOrDefault(stack.getItem(), this.level().spigotConfig.itemDespawnRate) : this.level().spigotConfig.itemDespawnRate; // Paper - Alternative item-despawn-rate @@ -117,7 +117,7 @@ index 30d62ee4d5cd2ddacb8783b5bbbf475d592b3e02..01e4395f1669d21c30465aa1366bd2f1 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 88aabe09118cbbad3add3cee44e237580294f685..62074152a0a494bbde4c39074942425a8b850ffd 100644 +index b1f8030868c938525916011b8a207058b702d4b8..1c8ce9506007cdd68f314af866ea99a7cf1fc2e9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -125,6 +125,49 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied-server/0059-Add-ping-command.patch b/patches/server/0057-Add-ping-command.patch similarity index 96% rename from patches/unapplied-server/0059-Add-ping-command.patch rename to patches/server/0057-Add-ping-command.patch index b6c61a022..28f0ecd98 100644 --- a/patches/unapplied-server/0059-Add-ping-command.patch +++ b/patches/server/0057-Add-ping-command.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add ping command diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index 6b95a810c2fa17f18bd911dba2c5544caa39173d..5473408750eb39c1e05c0fa9ba0c1ff1818553ee 100644 +index f12f208c1c4669b0aae35cb86b122bbf06fd884a..7af65fb843142ae1dbc4bc3a3b449f2463e5da55 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java -@@ -252,6 +252,7 @@ public class Commands { +@@ -250,6 +250,7 @@ public class Commands { StopCommand.register(this.dispatcher); TransferCommand.register(this.dispatcher); WhitelistCommand.register(this.dispatcher); diff --git a/patches/unapplied-server/0060-Add-demo-command.patch b/patches/server/0058-Add-demo-command.patch similarity index 94% rename from patches/unapplied-server/0060-Add-demo-command.patch rename to patches/server/0058-Add-demo-command.patch index 0b3873fc7..255c73c3d 100644 --- a/patches/unapplied-server/0060-Add-demo-command.patch +++ b/patches/server/0058-Add-demo-command.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add demo command diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index a5f1bfd8a6a6c374fbb72ea7957dd7d05073b93d..4568c4b02a87deb299ffd77b8e76329bb2b1dd70 100644 +index 7af65fb843142ae1dbc4bc3a3b449f2463e5da55..df5343bb6c4987e2c81b3eb33f131e2db93f9ddd 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java -@@ -252,6 +252,7 @@ public class Commands { +@@ -250,6 +250,7 @@ public class Commands { StopCommand.register(this.dispatcher); TransferCommand.register(this.dispatcher); WhitelistCommand.register(this.dispatcher); @@ -17,7 +17,7 @@ index a5f1bfd8a6a6c374fbb72ea7957dd7d05073b93d..4568c4b02a87deb299ffd77b8e76329b } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index e8160e63470cf2f3d15eeb2e7f83d3694cfc4db8..994da2c5bbba190507bbcee7029bee974eb3c641 100644 +index d6a1e2c21fb3b09e602ac6abe267c752d1f742eb..6d266f2096deca638ceebd2ca1fd4dce83e1e9a8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -179,6 +179,7 @@ public class PurpurConfig { diff --git a/patches/unapplied-server/0061-Add-credits-command.patch b/patches/server/0059-Add-credits-command.patch similarity index 95% rename from patches/unapplied-server/0061-Add-credits-command.patch rename to patches/server/0059-Add-credits-command.patch index 9f08a380f..d8935f0e2 100644 --- a/patches/unapplied-server/0061-Add-credits-command.patch +++ b/patches/server/0059-Add-credits-command.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add credits command diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index 4568c4b02a87deb299ffd77b8e76329bb2b1dd70..6af3e1e08048869ac28ab4a93e03d086872f866b 100644 +index df5343bb6c4987e2c81b3eb33f131e2db93f9ddd..a8f81bcbfccbce42ca4d194fcaa35222c0a547cb 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java -@@ -252,6 +252,7 @@ public class Commands { +@@ -250,6 +250,7 @@ public class Commands { StopCommand.register(this.dispatcher); TransferCommand.register(this.dispatcher); WhitelistCommand.register(this.dispatcher); @@ -17,7 +17,7 @@ index 4568c4b02a87deb299ffd77b8e76329bb2b1dd70..6af3e1e08048869ac28ab4a93e03d086 org.purpurmc.purpur.command.PingCommand.register(this.dispatcher); // Purpur } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 994da2c5bbba190507bbcee7029bee974eb3c641..2e78d67201e66c1f3fd1f45ed625e682ea074848 100644 +index 6d266f2096deca638ceebd2ca1fd4dce83e1e9a8..7ed1b8048c6f1f198c45337ae5f9ddd2de5c02ab 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -179,6 +179,7 @@ public class PurpurConfig { diff --git a/patches/unapplied-server/0062-Configurable-jockey-options.patch b/patches/server/0060-Configurable-jockey-options.patch similarity index 93% rename from patches/unapplied-server/0062-Configurable-jockey-options.patch rename to patches/server/0060-Configurable-jockey-options.patch index f619870e7..505b055f5 100644 --- a/patches/unapplied-server/0062-Configurable-jockey-options.patch +++ b/patches/server/0060-Configurable-jockey-options.patch @@ -57,10 +57,10 @@ index 805bfee8b061445de5b5d8aeb13c792178e25f7b..6673c0bff3a4e3d11a09e9dc8aeb0c24 return checkMonsterSpawnRules(type, world, spawnReason, pos, random) && (MobSpawnType.isSpawner(spawnReason) || world.canSeeSky(pos)); } 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 9af1c4b794ddaf8640076f172cf0317acad6bcb2..555b86925b8d848fad40a838dd98607db8741e3b 100644 +index 28587e17b15748880576f7a71e71a05c9c1bcf78..43c48bb14957b93ee3b0191360c09f710bc008e0 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -@@ -126,6 +126,18 @@ public class Zombie extends Monster { +@@ -130,6 +130,18 @@ public class Zombie extends Monster { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.zombieMaxHealth); } @@ -79,7 +79,7 @@ index 9af1c4b794ddaf8640076f172cf0317acad6bcb2..555b86925b8d848fad40a838dd98607d @Override protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur -@@ -533,19 +545,20 @@ public class Zombie extends Monster { +@@ -544,19 +556,20 @@ public class Zombie extends Monster { } if (object instanceof Zombie.ZombieGroupData entityzombie_groupdatazombie) { @@ -106,7 +106,7 @@ index 9af1c4b794ddaf8640076f172cf0317acad6bcb2..555b86925b8d848fad40a838dd98607d Chicken entitychicken1 = (Chicken) EntityType.CHICKEN.create(this.level()); if (entitychicken1 != null) { -@@ -555,6 +568,7 @@ public class Zombie extends Monster { +@@ -566,6 +579,7 @@ public class Zombie extends Monster { this.startRiding(entitychicken1); world.addFreshEntity(entitychicken1, CreatureSpawnEvent.SpawnReason.MOUNT); // CraftBukkit } @@ -115,10 +115,10 @@ index 9af1c4b794ddaf8640076f172cf0317acad6bcb2..555b86925b8d848fad40a838dd98607d } } 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 8e7f0f2069c3382f3a7b08b80f829398e62377f7..ffe2144e307acebd4a8bed043db0ee0bb6bf611c 100644 +index 199770256cf7f838228b5263ec9af8c6b18f30fb..cdf6753b6bb2bbb4f3ab21792bd3153988b26b75 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -@@ -107,6 +107,21 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { +@@ -110,6 +110,21 @@ 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); } @@ -141,10 +141,10 @@ index 8e7f0f2069c3382f3a7b08b80f829398e62377f7..ffe2144e307acebd4a8bed043db0ee0b protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); 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 138f3f6a9b0754d54e5f8000962bb52b224f677d..75c34d9fcc4b33d30b18f1ce4c8749a068744abc 100644 +index 883cd9a96a1d4276ca10c5558b553c36a1bb0d79..0dcf5638e12c7670e6a5e577210e2542de1fd38b 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java -@@ -84,6 +84,21 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { +@@ -85,6 +85,21 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.zombifiedPiglinMaxHealth); } @@ -167,7 +167,7 @@ index 138f3f6a9b0754d54e5f8000962bb52b224f677d..75c34d9fcc4b33d30b18f1ce4c8749a0 public void setPersistentAngerTarget(@Nullable UUID angryAt) { this.persistentAngerTarget = angryAt; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 06acffbb57d961d1c8a48bce5983b063146181f3..803387f232c25ed43c252fa05335e5e1915048ff 100644 +index 1c8ce9506007cdd68f314af866ea99a7cf1fc2e9..5f72a1a5a4f26d2a6fa595c72e3557a10a3f5107 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -610,6 +610,9 @@ public class PurpurWorldConfig { @@ -210,7 +210,7 @@ index 06acffbb57d961d1c8a48bce5983b063146181f3..803387f232c25ed43c252fa05335e5e1 } public boolean illusionerRidable = false; -@@ -1696,6 +1708,9 @@ public class PurpurWorldConfig { +@@ -1692,6 +1704,9 @@ public class PurpurWorldConfig { public boolean zombieControllable = true; public double zombieMaxHealth = 20.0D; public double zombieSpawnReinforcements = 0.1D; @@ -220,7 +220,7 @@ index 06acffbb57d961d1c8a48bce5983b063146181f3..803387f232c25ed43c252fa05335e5e1 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -1707,6 +1722,9 @@ public class PurpurWorldConfig { +@@ -1703,6 +1718,9 @@ public class PurpurWorldConfig { } zombieMaxHealth = getDouble("mobs.zombie.attributes.max_health", zombieMaxHealth); zombieSpawnReinforcements = getDouble("mobs.zombie.attributes.spawn_reinforcements", zombieSpawnReinforcements); @@ -230,7 +230,7 @@ index 06acffbb57d961d1c8a48bce5983b063146181f3..803387f232c25ed43c252fa05335e5e1 } public boolean zombieHorseRidable = false; -@@ -1743,6 +1761,9 @@ public class PurpurWorldConfig { +@@ -1739,6 +1757,9 @@ public class PurpurWorldConfig { public boolean zombieVillagerControllable = true; public double zombieVillagerMaxHealth = 20.0D; public double zombieVillagerSpawnReinforcements = 0.1D; @@ -240,7 +240,7 @@ index 06acffbb57d961d1c8a48bce5983b063146181f3..803387f232c25ed43c252fa05335e5e1 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -1754,6 +1775,9 @@ public class PurpurWorldConfig { +@@ -1750,6 +1771,9 @@ public class PurpurWorldConfig { } zombieVillagerMaxHealth = getDouble("mobs.zombie_villager.attributes.max_health", zombieVillagerMaxHealth); zombieVillagerSpawnReinforcements = getDouble("mobs.zombie_villager.attributes.spawn_reinforcements", zombieVillagerSpawnReinforcements); @@ -250,7 +250,7 @@ index 06acffbb57d961d1c8a48bce5983b063146181f3..803387f232c25ed43c252fa05335e5e1 } public boolean zombifiedPiglinRidable = false; -@@ -1761,6 +1785,9 @@ public class PurpurWorldConfig { +@@ -1757,6 +1781,9 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinControllable = true; public double zombifiedPiglinMaxHealth = 20.0D; public double zombifiedPiglinSpawnReinforcements = 0.0D; @@ -260,7 +260,7 @@ index 06acffbb57d961d1c8a48bce5983b063146181f3..803387f232c25ed43c252fa05335e5e1 private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -1772,5 +1799,8 @@ public class PurpurWorldConfig { +@@ -1768,5 +1795,8 @@ public class PurpurWorldConfig { } zombifiedPiglinMaxHealth = getDouble("mobs.zombified_piglin.attributes.max_health", zombifiedPiglinMaxHealth); zombifiedPiglinSpawnReinforcements = getDouble("mobs.zombified_piglin.attributes.spawn_reinforcements", zombifiedPiglinSpawnReinforcements); diff --git a/patches/unapplied-server/0063-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch b/patches/server/0061-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch similarity index 97% rename from patches/unapplied-server/0063-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch rename to patches/server/0061-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch index e6c3930a9..f99ae775e 100644 --- a/patches/unapplied-server/0063-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch +++ b/patches/server/0061-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Phantoms attracted to crystals and crystals shoot phantoms diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java -index d8e440e14b72dc48ae97244f1bed2c06abd997ab..2bac39e5ba09e08d23d2a4be37f7fe0da0ce71a6 100644 +index a33d89fe9ca9e343edab8bb1cc88c54130ddb4a7..72122333cf0247e4a8511ac633487f170b89586c 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java @@ -31,6 +31,12 @@ public class EndCrystal extends Entity { @@ -21,7 +21,7 @@ index d8e440e14b72dc48ae97244f1bed2c06abd997ab..2bac39e5ba09e08d23d2a4be37f7fe0d public EndCrystal(EntityType type, Level world) { super(type, world); -@@ -80,6 +86,49 @@ public class EndCrystal extends Entity { +@@ -82,6 +88,49 @@ public class EndCrystal extends Entity { // Paper end - Fix invulnerable end crystals } @@ -72,7 +72,7 @@ index d8e440e14b72dc48ae97244f1bed2c06abd997ab..2bac39e5ba09e08d23d2a4be37f7fe0d @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 01e8eaecec61e664838b5d7f18a9c3e730f00ddf..e0b1b0106fd3bbb6764d1b0a58ab2810181cac02 100644 +index 4dea7aed072caf383986e09ead8ee790b35d9706..7a80cb45ff5d96380755d37ff43ddeac2cd451e1 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java @@ -48,6 +48,7 @@ public class Phantom extends FlyingMob implements Enemy { @@ -256,7 +256,7 @@ index 01e8eaecec61e664838b5d7f18a9c3e730f00ddf..e0b1b0106fd3bbb6764d1b0a58ab2810 private float speed = 0.1F; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 803387f232c25ed43c252fa05335e5e1915048ff..bfa1ed9e0927f919648ab67ae49681fcd1286e3a 100644 +index 5f72a1a5a4f26d2a6fa595c72e3557a10a3f5107..b9b9d23929cc390ebb97e93758f6b746606edc95 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1087,6 +1087,9 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied-server/0064-Add-phantom-spawning-options.patch b/patches/server/0062-Add-phantom-spawning-options.patch similarity index 98% rename from patches/unapplied-server/0064-Add-phantom-spawning-options.patch rename to patches/server/0062-Add-phantom-spawning-options.patch index 63bf22cea..926490bad 100644 --- a/patches/unapplied-server/0064-Add-phantom-spawning-options.patch +++ b/patches/server/0062-Add-phantom-spawning-options.patch @@ -40,7 +40,7 @@ index 1b1b475ca27e799e251d6f8a8c9fe1a4fd8bae83..04f67f7b43d2f461c776c76614dc3e5f for (int l = 0; l < k; ++l) { // Paper start - PhantomPreSpawnEvent diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index bfa1ed9e0927f919648ab67ae49681fcd1286e3a..07f3b64e5d117957262ce6c8290052d707d17508 100644 +index b9b9d23929cc390ebb97e93758f6b746606edc95..1ce621db17377c3f35151096db9bca048161981c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1090,6 +1090,12 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied-server/0065-Implement-bed-explosion-options.patch b/patches/server/0063-Implement-bed-explosion-options.patch similarity index 97% rename from patches/unapplied-server/0065-Implement-bed-explosion-options.patch rename to patches/server/0063-Implement-bed-explosion-options.patch index 631432c6d..19cae2047 100644 --- a/patches/unapplied-server/0065-Implement-bed-explosion-options.patch +++ b/patches/server/0063-Implement-bed-explosion-options.patch @@ -27,7 +27,7 @@ index 85d598c3354ee62f0fd1b26e485e0084967c0380..b59dd6b512021c335f3c21999958e2ea } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 10de2140aa89f75e7f67b38f6c1286f4330d127b..95f016b7c127129b71e266a3daefd55502fdb299 100644 +index 1ce621db17377c3f35151096db9bca048161981c..ff9d6c6b5e999c61f450d90327dff9461b7bc34a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -284,6 +284,27 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied-server/0066-Implement-respawn-anchor-explosion-options.patch b/patches/server/0064-Implement-respawn-anchor-explosion-options.patch similarity index 97% rename from patches/unapplied-server/0066-Implement-respawn-anchor-explosion-options.patch rename to patches/server/0064-Implement-respawn-anchor-explosion-options.patch index d8e9593ca..9086ff605 100644 --- a/patches/unapplied-server/0066-Implement-respawn-anchor-explosion-options.patch +++ b/patches/server/0064-Implement-respawn-anchor-explosion-options.patch @@ -18,7 +18,7 @@ index 94d067e9eeee73183de25165d8c97043fe256103..00b6941951e1af9993f8f6da5425d31b public static boolean canSetSpawn(Level world) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 95f016b7c127129b71e266a3daefd55502fdb299..55ae989ae13ae9c0730f6f8df5f7eba52a560b1f 100644 +index ff9d6c6b5e999c61f450d90327dff9461b7bc34a..a922ae826a3c542094eacd551a9aa04cd81fd02b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -324,6 +324,27 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied-server/0067-Add-allow-water-in-end-world-option.patch b/patches/server/0065-Add-allow-water-in-end-world-option.patch similarity index 87% rename from patches/unapplied-server/0067-Add-allow-water-in-end-world-option.patch rename to patches/server/0065-Add-allow-water-in-end-world-option.patch index d0fe3fe2a..854a31397 100644 --- a/patches/unapplied-server/0067-Add-allow-water-in-end-world-option.patch +++ b/patches/server/0065-Add-allow-water-in-end-world-option.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add allow water in end world option diff --git a/src/main/java/net/minecraft/world/item/BucketItem.java b/src/main/java/net/minecraft/world/item/BucketItem.java -index 49557d6f22c5725c663a231deab019d4f6fe95fa..046652e8f9c5dcdf7c90acb9391214cac46bd7d8 100644 +index 321188173918d0d60858a258400dfd682ccdb21c..af47074f3a61a8518697d7851e43d5436fec5d57 100644 --- a/src/main/java/net/minecraft/world/item/BucketItem.java +++ b/src/main/java/net/minecraft/world/item/BucketItem.java -@@ -194,7 +194,7 @@ public class BucketItem extends Item implements DispensibleContainerItem { +@@ -196,7 +196,7 @@ public class BucketItem extends Item implements DispensibleContainerItem { // CraftBukkit end if (!flag2) { return movingobjectpositionblock != null && this.emptyContents(entityhuman, world, movingobjectpositionblock.getBlockPos().relative(movingobjectpositionblock.getDirection()), (BlockHitResult) null, enumdirection, clicked, itemstack, enumhand); // CraftBukkit @@ -17,7 +17,7 @@ index 49557d6f22c5725c663a231deab019d4f6fe95fa..046652e8f9c5dcdf7c90acb9391214ca int i = blockposition.getX(); int j = blockposition.getY(); int k = blockposition.getZ(); -@@ -202,7 +202,7 @@ public class BucketItem extends Item implements DispensibleContainerItem { +@@ -204,7 +204,7 @@ public class BucketItem extends Item implements DispensibleContainerItem { world.playSound(entityhuman, blockposition, SoundEvents.FIRE_EXTINGUISH, SoundSource.BLOCKS, 0.5F, 2.6F + (world.random.nextFloat() - world.random.nextFloat()) * 0.8F); for (int l = 0; l < 8; ++l) { @@ -27,13 +27,13 @@ index 49557d6f22c5725c663a231deab019d4f6fe95fa..046652e8f9c5dcdf7c90acb9391214ca return true; diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index be8bc5b5d5fdf41da40fb5aef9e6bb16f2af0ba0..a0a0ccd06cf8de4a379d9fbb89865bae8feeedc6 100644 +index 9ee0a4368fa69a66a6da9809c9885460e85c5804..df7ae03f3162c15ef5f5b9647c7d5d6182638257 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -1894,4 +1894,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable { - return null; +@@ -1407,4 +1407,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable { + } } - // Paper end - optimize redstone (Alternate Current) + // Paper end - notify observers even if grow failed + // Purpur start + public boolean isNether() { + return getWorld().getEnvironment() == org.bukkit.World.Environment.NETHER; @@ -45,13 +45,13 @@ index be8bc5b5d5fdf41da40fb5aef9e6bb16f2af0ba0..a0a0ccd06cf8de4a379d9fbb89865bae + // Purpur end } diff --git a/src/main/java/net/minecraft/world/level/block/IceBlock.java b/src/main/java/net/minecraft/world/level/block/IceBlock.java -index 013302623d3ca3ff88f242d740af935dcf4844a6..13dd8bc7d2f6b71a5f1779dde53c5c84d83538ce 100644 +index ac775afb265430ac202cfa3900a036d11a308b1e..87ce003dfeca975d8e6af26fd341f3abe66dc185 100644 --- a/src/main/java/net/minecraft/world/level/block/IceBlock.java +++ b/src/main/java/net/minecraft/world/level/block/IceBlock.java @@ -41,7 +41,7 @@ public class IceBlock extends HalfTransparentBlock { public void afterDestroy(Level world, BlockPos pos, ItemStack tool) { // Paper end - Improve Block#breakNaturally API - if (EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SILK_TOUCH, tool) == 0) { + if (!EnchantmentHelper.hasTag(tool, EnchantmentTags.PREVENTS_ICE_MELTING)) { - if (world.dimensionType().ultraWarm()) { + if (world.isNether() || (world.isTheEnd() && !org.purpurmc.purpur.PurpurConfig.allowWaterPlacementInTheEnd)) { // Purpur world.removeBlock(pos, false); diff --git a/patches/unapplied-server/0068-Allow-color-codes-in-books.patch b/patches/server/0066-Allow-color-codes-in-books.patch similarity index 92% rename from patches/unapplied-server/0068-Allow-color-codes-in-books.patch rename to patches/server/0066-Allow-color-codes-in-books.patch index 2122c64dd..5d0976102 100644 --- a/patches/unapplied-server/0068-Allow-color-codes-in-books.patch +++ b/patches/server/0066-Allow-color-codes-in-books.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Allow color codes in books diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 510a4391463026dd0c896027a579a94174c24299..c647629ef404e983240577c87306bb76bf0cc4a5 100644 +index 58e3f6f0febff3956b80ebeab387c46deb5fe8ae..9d5c044ec96be46c8ad32579e9a719fccf9f17f5 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1234,10 +1234,14 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1203,10 +1203,14 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl Objects.requireNonNull(list); stream.forEach(list::add); @@ -25,7 +25,7 @@ index 510a4391463026dd0c896027a579a94174c24299..c647629ef404e983240577c87306bb76 }; this.filterTextPacket((List) list).thenAcceptAsync(consumer, this.server); -@@ -1245,13 +1249,18 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1214,13 +1218,18 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl } private void updateBookContents(List pages, int slotId) { @@ -45,7 +45,7 @@ index 510a4391463026dd0c896027a579a94174c24299..c647629ef404e983240577c87306bb76 itemstack.set(DataComponents.WRITABLE_BOOK_CONTENT, new WritableBookContent(list1)); this.player.getInventory().setItem(slotId, CraftEventFactory.handleEditBookEvent(this.player, slotId, handItem, itemstack)); // CraftBukkit // Paper - Don't ignore result (see other callsite for handleEditBookEvent) -@@ -1259,6 +1268,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1228,6 +1237,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl } private void signBook(FilteredText title, List pages, int slotId) { @@ -57,7 +57,7 @@ index 510a4391463026dd0c896027a579a94174c24299..c647629ef404e983240577c87306bb76 ItemStack itemstack = this.player.getInventory().getItem(slotId); if (itemstack.is(Items.WRITABLE_BOOK)) { -@@ -1266,10 +1280,10 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1235,10 +1249,10 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl itemstack1.remove(DataComponents.WRITABLE_BOOK_CONTENT); List> list1 = (List>) (List) pages.stream().map((filteredtext1) -> { // CraftBukkit - decompile error @@ -70,7 +70,7 @@ index 510a4391463026dd0c896027a579a94174c24299..c647629ef404e983240577c87306bb76 CraftEventFactory.handleEditBookEvent(this.player, slotId, itemstack, itemstack1); // CraftBukkit this.player.getInventory().setItem(slotId, itemstack); // CraftBukkit - event factory updates the hand book } -@@ -1279,6 +1293,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1248,6 +1262,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl return this.player.isTextFilteringEnabled() ? Filterable.passThrough(message.filteredOrEmpty()) : Filterable.from(message); } diff --git a/patches/unapplied-server/0069-Entity-lifespan.patch b/patches/server/0067-Entity-lifespan.patch similarity index 81% rename from patches/unapplied-server/0069-Entity-lifespan.patch rename to patches/server/0067-Entity-lifespan.patch index efb2f5207..e3cdec015 100644 --- a/patches/unapplied-server/0069-Entity-lifespan.patch +++ b/patches/server/0067-Entity-lifespan.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Entity lifespan diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 1d09fe4cc604e5ccebe32fde9e2f7c008bb10a72..96019786b27e2f017239b765724257bebee73cb9 100644 +index 9d5c044ec96be46c8ad32579e9a719fccf9f17f5..3de25a0f8e8242986c9fc8660ca9d0af976d9088 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2807,6 +2807,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2751,6 +2751,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl AABB axisalignedbb = entity.getBoundingBox(); if (this.player.canInteractWithEntity(axisalignedbb, 1.0D)) { @@ -17,10 +17,10 @@ index 1d09fe4cc604e5ccebe32fde9e2f7c008bb10a72..96019786b27e2f017239b765724257be private void performInteraction(InteractionHand enumhand, ServerGamePacketListenerImpl.EntityInteraction playerconnection_a, PlayerInteractEntityEvent event) { // CraftBukkit ItemStack itemstack = ServerGamePacketListenerImpl.this.player.getItemInHand(enumhand); diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 49422ea596125ee669bdc66d88f084b692acaca7..6415bc82e44629a08a2ec881acaa5d993e48bb9d 100644 +index cc326c3b6a78755b7bc17ebf864cc9c99ec38c1a..94508891d9ea3806c66b020fec4c97297dd558d8 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -151,6 +151,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti +@@ -146,6 +146,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab private BlockPos restrictCenter; private float restrictRadius; @@ -28,7 +28,7 @@ index 49422ea596125ee669bdc66d88f084b692acaca7..6415bc82e44629a08a2ec881acaa5d99 public boolean aware = true; // CraftBukkit protected Mob(EntityType type, Level world) { -@@ -338,6 +339,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti +@@ -320,6 +321,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab entityliving = null; } } @@ -36,7 +36,7 @@ index 49422ea596125ee669bdc66d88f084b692acaca7..6415bc82e44629a08a2ec881acaa5d99 this.target = entityliving; return true; // CraftBukkit end -@@ -380,8 +382,28 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti +@@ -362,8 +364,28 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab } this.level().getProfiler().pop(); @@ -65,7 +65,7 @@ index 49422ea596125ee669bdc66d88f084b692acaca7..6415bc82e44629a08a2ec881acaa5d99 @Override protected void playHurtSound(DamageSource damageSource) { this.resetAmbientSoundTime(); -@@ -584,6 +606,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti +@@ -538,6 +560,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab } nbt.putBoolean("Bukkit.Aware", this.aware); // CraftBukkit @@ -73,7 +73,7 @@ index 49422ea596125ee669bdc66d88f084b692acaca7..6415bc82e44629a08a2ec881acaa5d99 } @Override -@@ -668,6 +691,11 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti +@@ -615,6 +638,11 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab this.aware = nbt.getBoolean("Bukkit.Aware"); } // CraftBukkit end @@ -85,8 +85,8 @@ index 49422ea596125ee669bdc66d88f084b692acaca7..6415bc82e44629a08a2ec881acaa5d99 } @Override -@@ -1847,6 +1875,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti - this.setLastHurtMob(target); +@@ -1738,6 +1766,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab + this.playAttackSound(); } + if (target instanceof ServerPlayer) this.ticksSinceLastInteraction = 0; // Purpur @@ -94,7 +94,7 @@ index 49422ea596125ee669bdc66d88f084b692acaca7..6415bc82e44629a08a2ec881acaa5d99 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 55ae989ae13ae9c0730f6f8df5f7eba52a560b1f..9ba3a90e1af9c733949c52988c56c05af46356e8 100644 +index a922ae826a3c542094eacd551a9aa04cd81fd02b..f601c4b0c40706a241ca2906f07dfcd869afe9cd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -125,6 +125,11 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied-server/0070-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch b/patches/server/0068-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch similarity index 89% rename from patches/unapplied-server/0070-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch rename to patches/server/0068-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch index 7682b42d2..7940c3d17 100644 --- a/patches/unapplied-server/0070-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch +++ b/patches/server/0068-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add option to teleport to spawn if outside world border diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 65fa71b587bd14494c71ae265e56de768d6b8219..a11dd0a2f302f1ff64c3ca92d55d6a8ef28398b7 100644 +index b86bdf61be2776352dd6c59b66ecfcee269f8e51..ec77e834d5f21c64aaf5ac8425fb1b42859b22e8 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -2963,4 +2963,26 @@ public class ServerPlayer extends Player { +@@ -2992,4 +2992,26 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { return (CraftPlayer) super.getBukkitEntity(); } // CraftBukkit end @@ -36,10 +36,10 @@ index 65fa71b587bd14494c71ae265e56de768d6b8219..a11dd0a2f302f1ff64c3ca92d55d6a8e + // Purpur end } diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 72eb43102ddf8349c4a376ed66ef016dc3bf52eb..c5aa3104c6b9377422ab36dca73d8179a3af7f13 100644 +index 6f6427b47d5ec64fedcc9c50ee9e11618ba8a672..7ac62e6ada528e6efe1ea49db1a40edc891d74a8 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -440,6 +440,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -462,6 +462,7 @@ public abstract class LivingEntity extends Entity implements Attackable { double d1 = this.level().getWorldBorder().getDamagePerBlock(); if (d1 > 0.0D) { @@ -48,7 +48,7 @@ index 72eb43102ddf8349c4a376ed66ef016dc3bf52eb..c5aa3104c6b9377422ab36dca73d8179 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9ba3a90e1af9c733949c52988c56c05af46356e8..98e6faaeeaf8a983f9d730591a9d85c314c112d3 100644 +index f601c4b0c40706a241ca2906f07dfcd869afe9cd..efc357e2a4eb33a8e77c84599d88103b29542dca 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -242,6 +242,7 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied-server/0071-Squid-EAR-immunity.patch b/patches/server/0069-Squid-EAR-immunity.patch similarity index 88% rename from patches/unapplied-server/0071-Squid-EAR-immunity.patch rename to patches/server/0069-Squid-EAR-immunity.patch index 6673d5046..f1b5b757a 100644 --- a/patches/unapplied-server/0071-Squid-EAR-immunity.patch +++ b/patches/server/0069-Squid-EAR-immunity.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Squid EAR immunity diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 859ea7beb9f9644d45f805c1ecc18e7b87be67a7..1da67c207b18e4c0eaf9a822360dbbe3215e7a6d 100644 +index efc357e2a4eb33a8e77c84599d88103b29542dca..9873f78eb7f4739c65014b0a0c63c328813c0d9c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1475,6 +1475,7 @@ public class PurpurWorldConfig { @@ -25,10 +25,10 @@ index 859ea7beb9f9644d45f805c1ecc18e7b87be67a7..1da67c207b18e4c0eaf9a822360dbbe3 public boolean spiderRidable = false; diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index a9a39f0da7b09410d8171172a4219c7d509fdb99..2ed85c0aa7d3053e338927fa308b86bcbf9eb7b6 100644 +index 0a237d1adeecba0059589ea2f4772f27100dae0f..9dbcc2f963035ad592870e55f7b1a549b8f96d8d 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java -@@ -380,6 +380,7 @@ public class ActivationRange +@@ -237,6 +237,7 @@ public class ActivationRange */ public static boolean checkIfActive(Entity entity) { diff --git a/patches/unapplied-server/0072-Phantoms-burn-in-light.patch b/patches/server/0070-Phantoms-burn-in-light.patch similarity index 95% rename from patches/unapplied-server/0072-Phantoms-burn-in-light.patch rename to patches/server/0070-Phantoms-burn-in-light.patch index f998cf89d..cb7813195 100644 --- a/patches/unapplied-server/0072-Phantoms-burn-in-light.patch +++ b/patches/server/0070-Phantoms-burn-in-light.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Phantoms burn in light diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -index e0b1b0106fd3bbb6764d1b0a58ab2810181cac02..1ddccb9fa438682c2ebad7c071c7a4f8dd00b463 100644 +index 7a80cb45ff5d96380755d37ff43ddeac2cd451e1..8f221fe016ea7221eb3a2116a2213139cf961797 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java @@ -48,6 +48,7 @@ public class Phantom extends FlyingMob implements Enemy { @@ -27,7 +27,7 @@ index e0b1b0106fd3bbb6764d1b0a58ab2810181cac02..1ddccb9fa438682c2ebad7c071c7a4f8 + if (this.isAlive() && (burnFromDaylight || burnFromLightSource)) { // Paper - shouldBurnInDay API + // Purpur end if (getRider() == null || !this.isControllable()) // Purpur - this.igniteForSeconds(8); + this.igniteForSeconds(8.0F); } @@ -641,6 +646,12 @@ public class Phantom extends FlyingMob implements Enemy { return false; @@ -51,7 +51,7 @@ index e0b1b0106fd3bbb6764d1b0a58ab2810181cac02..1ddccb9fa438682c2ebad7c071c7a4f8 list.sort(Comparator.comparing((Entity e) -> { return e.getY(); }).reversed()); // CraftBukkit - decompile error Iterator iterator = list.iterator(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1da67c207b18e4c0eaf9a822360dbbe3215e7a6d..2c6167946e8186f378142b0cd02b71abf1780bea 100644 +index 9873f78eb7f4739c65014b0a0c63c328813c0d9c..42ca14fb05af1c3088143aab064ea6fc594ade6e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1145,6 +1145,9 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied-server/0073-Configurable-villager-breeding.patch b/patches/server/0071-Configurable-villager-breeding.patch similarity index 78% rename from patches/unapplied-server/0073-Configurable-villager-breeding.patch rename to patches/server/0071-Configurable-villager-breeding.patch index 9777a045e..ff28a8c1c 100644 --- a/patches/unapplied-server/0073-Configurable-villager-breeding.patch +++ b/patches/server/0071-Configurable-villager-breeding.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable villager breeding diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 051940da69567274f48485f060cbc3ac21a0907f..6de74d992bd8b2845ab98d56201e7eeabd1dfc6b 100644 +index 4a8da72d81a1938fa82dd1d2d861defd2bdac4b7..f07379734f7c131e1ad3e22062f2deac4a0a342e 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -777,7 +777,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -756,7 +756,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @Override public boolean canBreed() { @@ -18,21 +18,21 @@ index 051940da69567274f48485f060cbc3ac21a0907f..6de74d992bd8b2845ab98d56201e7eea private boolean hungry() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2c6167946e8186f378142b0cd02b71abf1780bea..2a8ec23926af200a8bd8d33ecd930387117fc71b 100644 +index 42ca14fb05af1c3088143aab064ea6fc594ade6e..e45b2ec9d119623ec53104a602aadc0ad4949f1d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1633,6 +1633,7 @@ public class PurpurWorldConfig { +@@ -1632,6 +1632,7 @@ public class PurpurWorldConfig { + public boolean villagerControllable = true; public double villagerMaxHealth = 20.0D; public boolean villagerFollowEmeraldBlock = false; - public boolean villagerCanBeLeashed = false; + public boolean villagerCanBreed = true; private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1645,6 +1646,7 @@ public class PurpurWorldConfig { +@@ -1643,6 +1644,7 @@ public class PurpurWorldConfig { + } villagerMaxHealth = getDouble("mobs.villager.attributes.max_health", villagerMaxHealth); villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock); - villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); + villagerCanBreed = getBoolean("mobs.villager.can-breed", villagerCanBreed); } diff --git a/patches/unapplied-server/0074-Redstone-deactivates-spawners.patch b/patches/server/0072-Redstone-deactivates-spawners.patch similarity index 94% rename from patches/unapplied-server/0074-Redstone-deactivates-spawners.patch rename to patches/server/0072-Redstone-deactivates-spawners.patch index 41653f9a7..b1fec444e 100644 --- a/patches/unapplied-server/0074-Redstone-deactivates-spawners.patch +++ b/patches/server/0072-Redstone-deactivates-spawners.patch @@ -17,7 +17,7 @@ index f57e1b78204dff661ad5d3ee93a88a00330af2dc..967af8771ff8564c715d89f4b4b69b16 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index df4f384032f398fc9852e753dee820ffa33e10bb..85d2030c58fb97be82c97a042bc5d73e76274268 100644 +index e45b2ec9d119623ec53104a602aadc0ad4949f1d..41c097246b84920187969e4cac72d6d025a2a926 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -352,6 +352,11 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied-server/0075-Totems-work-in-inventory.patch b/patches/server/0073-Totems-work-in-inventory.patch similarity index 91% rename from patches/unapplied-server/0075-Totems-work-in-inventory.patch rename to patches/server/0073-Totems-work-in-inventory.patch index 57abca151..bda1a71a6 100644 --- a/patches/unapplied-server/0075-Totems-work-in-inventory.patch +++ b/patches/server/0073-Totems-work-in-inventory.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Totems work in inventory diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 740fc4e4b4b6023d3b3a66c13e689f54f1d32aad..bc410b94c479e9acf969b21c920db0f616342591 100644 +index 7ac62e6ada528e6efe1ea49db1a40edc891d74a8..d7175268bf615e20a7e14ad024ab5e3843c91f64 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1647,6 +1647,18 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1630,6 +1630,18 @@ public abstract class LivingEntity extends Entity implements Attackable { } } @@ -28,7 +28,7 @@ index 740fc4e4b4b6023d3b3a66c13e689f54f1d32aad..bc410b94c479e9acf969b21c920db0f6 EntityResurrectEvent event = new EntityResurrectEvent((org.bukkit.entity.LivingEntity) this.getBukkitEntity(), handSlot); event.setCancelled(itemstack == null); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 85d2030c58fb97be82c97a042bc5d73e76274268..be916fe3a8bc8996be8b0835e3bd8f7920c15055 100644 +index 41c097246b84920187969e4cac72d6d025a2a926..5f0610d06902aa1fea9cd130ea2724b809790e0e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -243,6 +243,7 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied-server/0076-Add-vindicator-johnny-spawn-chance.patch b/patches/server/0074-Add-vindicator-johnny-spawn-chance.patch similarity index 80% rename from patches/unapplied-server/0076-Add-vindicator-johnny-spawn-chance.patch rename to patches/server/0074-Add-vindicator-johnny-spawn-chance.patch index 44e3cd15b..899ff3440 100644 --- a/patches/unapplied-server/0076-Add-vindicator-johnny-spawn-chance.patch +++ b/patches/server/0074-Add-vindicator-johnny-spawn-chance.patch @@ -5,15 +5,14 @@ Subject: [PATCH] Add vindicator johnny spawn chance diff --git a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java -index e270da29fdab5060b6a936bba67c433a78c54b5b..61f1778d454cebaab5580179614ff48ab67b8fe6 100644 +index eb6dce8b2dcc7f4e63c69cfa6acbd9b36a923706..feb7eb93bd20e141ff86ed2e91b9cd0fa3f1d154 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java +++ b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java -@@ -148,6 +148,12 @@ public class Vindicator extends AbstractIllager { +@@ -151,6 +151,11 @@ public class Vindicator extends AbstractIllager { RandomSource randomSource = world.getRandom(); this.populateDefaultEquipmentSlots(randomSource, difficulty); - this.populateDefaultEquipmentEnchantments(randomSource, difficulty); + this.populateDefaultEquipmentEnchantments(world, randomSource, difficulty); + // Purpur start -+ Level level = world.getMinecraftWorld(); + if (level().purpurConfig.vindicatorJohnnySpawnChance > 0D && random.nextDouble() <= level().purpurConfig.vindicatorJohnnySpawnChance) { + setCustomName(Component.translatable("Johnny")); + } @@ -22,10 +21,10 @@ index e270da29fdab5060b6a936bba67c433a78c54b5b..61f1778d454cebaab5580179614ff48a } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1c4446ce2ca2e9c9d3d85a38752a6f27f8121d12..8df777ce71b649de697bbf9b77636f3a30df3d1c 100644 +index 5f0610d06902aa1fea9cd130ea2724b809790e0e..c5c7ba3449fea61b8a94a99e97867f5d47be5c38 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1660,6 +1660,7 @@ public class PurpurWorldConfig { +@@ -1658,6 +1658,7 @@ public class PurpurWorldConfig { public boolean vindicatorRidableInWater = true; public boolean vindicatorControllable = true; public double vindicatorMaxHealth = 24.0D; @@ -33,7 +32,7 @@ index 1c4446ce2ca2e9c9d3d85a38752a6f27f8121d12..8df777ce71b649de697bbf9b77636f3a private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -1670,6 +1671,7 @@ public class PurpurWorldConfig { +@@ -1668,6 +1669,7 @@ public class PurpurWorldConfig { set("mobs.vindicator.attributes.max_health", oldValue); } vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); diff --git a/patches/unapplied-server/0077-Dispensers-place-anvils-option.patch b/patches/server/0075-Dispensers-place-anvils-option.patch similarity index 90% rename from patches/unapplied-server/0077-Dispensers-place-anvils-option.patch rename to patches/server/0075-Dispensers-place-anvils-option.patch index 0dbf632e9..b95656d4e 100644 --- a/patches/unapplied-server/0077-Dispensers-place-anvils-option.patch +++ b/patches/server/0075-Dispensers-place-anvils-option.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Dispensers place anvils option diff --git a/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java b/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java -index 5dab1e10303177e5a4d97a91ee46ede66f30ae35..68236139e3571791b891dbbef6e3ee20031e16d9 100644 +index 9d71388c6e8ff56228afbf8cb18c37f861d0b246..b659f413d8c771e4b3b2e79a03ca21b72fba98a1 100644 --- a/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java +++ b/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java -@@ -1048,5 +1048,22 @@ public interface DispenseItemBehavior { +@@ -1015,5 +1015,22 @@ public interface DispenseItemBehavior { } } }); @@ -32,7 +32,7 @@ index 5dab1e10303177e5a4d97a91ee46ede66f30ae35..68236139e3571791b891dbbef6e3ee20 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7b584d5c8460e90dfea250591e4ca36cb1db004a..00c4cda4ca21195c4fbfeb47f92e197be18aa4c6 100644 +index c5c7ba3449fea61b8a94a99e97867f5d47be5c38..3d5c523611532b35453b86524af80d66879638c4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -315,8 +315,10 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied-server/0078-Allow-anvil-colors.patch b/patches/server/0076-Allow-anvil-colors.patch similarity index 96% rename from patches/unapplied-server/0078-Allow-anvil-colors.patch rename to patches/server/0076-Allow-anvil-colors.patch index cdcf19f9a..c66485794 100644 --- a/patches/unapplied-server/0078-Allow-anvil-colors.patch +++ b/patches/server/0076-Allow-anvil-colors.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Allow anvil colors diff --git a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java -index 9036426256f87b3ba4a78e6fa2cea4e028f84481..5cadd69bcae33b1de58806fcf40533850d976154 100644 +index 2348ee0065367ade5354d54aac53ab23d43d0622..48d803a3e8419a04fce934263f7a01dbfd335e2e 100644 --- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java +++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java @@ -279,6 +279,54 @@ public class AnvilMenu extends ItemCombinerMenu { @@ -64,7 +64,7 @@ index 9036426256f87b3ba4a78e6fa2cea4e028f84481..5cadd69bcae33b1de58806fcf4053385 } } else if (itemstack.has(DataComponents.CUSTOM_NAME)) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 00c4cda4ca21195c4fbfeb47f92e197be18aa4c6..4c80796777c5a90c5e7a9e8ef0beedfcb49f0aa9 100644 +index 3d5c523611532b35453b86524af80d66879638c4..e065cd4d0bc1f0ffe04023ceaa024d0598f343e9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -293,6 +293,13 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied-server/0079-Add-option-to-disable-dolphin-treasure-searching.patch b/patches/server/0077-Add-option-to-disable-dolphin-treasure-searching.patch similarity index 88% rename from patches/unapplied-server/0079-Add-option-to-disable-dolphin-treasure-searching.patch rename to patches/server/0077-Add-option-to-disable-dolphin-treasure-searching.patch index c2a10a8e2..e0905ce6c 100644 --- a/patches/unapplied-server/0079-Add-option-to-disable-dolphin-treasure-searching.patch +++ b/patches/server/0077-Add-option-to-disable-dolphin-treasure-searching.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add option to disable dolphin treasure searching diff --git a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java -index 4f294b3ecf061f34046b52bf2b6a3d0ff1ed347b..366d583926e7e33a8c1e5a803bb75a456b4838d0 100644 +index e60464efd9986e1cf857d8595b13535df7ffc7b1..30da8d977d5b591d6bce619eba71181cb588e3c4 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java -@@ -471,6 +471,7 @@ public class Dolphin extends WaterAnimal { +@@ -464,6 +464,7 @@ public class Dolphin extends WaterAnimal { @Override public boolean canUse() { @@ -17,7 +17,7 @@ index 4f294b3ecf061f34046b52bf2b6a3d0ff1ed347b..366d583926e7e33a8c1e5a803bb75a45 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d6ebaed09f0b84ec7641ad660f47aed95fdac1b9..dff99dafb0869106fc8f70ee583ba8e269e07777 100644 +index e065cd4d0bc1f0ffe04023ceaa024d0598f343e9..5ff9c2977b4efd67743b898219ba0a68bfb92dd8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -632,6 +632,7 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied-server/0080-Short-enderman-height.patch b/patches/server/0078-Short-enderman-height.patch similarity index 88% rename from patches/unapplied-server/0080-Short-enderman-height.patch rename to patches/server/0078-Short-enderman-height.patch index 8bad988ef..a408fa6d9 100644 --- a/patches/unapplied-server/0080-Short-enderman-height.patch +++ b/patches/server/0078-Short-enderman-height.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Short enderman height diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java -index 9b3bf5ac043262c6cd00d83b750c3313122d92a9..3097529a9066841a58c899ce55b3bc0cd6af7e88 100644 +index 76d0c482f1ab251963ca2e0c312acad52a7f9901..831da897fd422df8e57487017871e841cbc95d00 100644 --- a/src/main/java/net/minecraft/world/entity/EntityType.java +++ b/src/main/java/net/minecraft/world/entity/EntityType.java @@ -322,7 +322,8 @@ public class EntityType implements FeatureElement, EntityTypeT @@ -19,10 +19,10 @@ index 9b3bf5ac043262c6cd00d83b750c3313122d92a9..3097529a9066841a58c899ce55b3bc0c private final FeatureFlagSet requiredFeatures; 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 89275ac02fcfab963b520efae6135d6f5ac13465..cb307a9419399e33a895376a584456f084691965 100644 +index 12422c069c64bae0e16b3edd39e8dbe574704584..8604db61d2c8042d0399262cb60b98457e4f894c 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -419,6 +419,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -421,6 +421,7 @@ public class EnderMan extends Monster implements NeutralMob { if (this.isInvulnerableTo(source)) { return false; } else if (getRider() != null && this.isControllable()) { return super.hurt(source, amount); // Purpur - no teleporting on damage @@ -31,7 +31,7 @@ index 89275ac02fcfab963b520efae6135d6f5ac13465..cb307a9419399e33a895376a584456f0 boolean flag = source.getDirectEntity() instanceof ThrownPotion; boolean flag1; diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 43f42895c745be0fb809db856083dbea5def5776..68b19f66b38ffecfa05aaa7ec1187fb0967ebd57 100644 +index b15769f1e5b6cb2afc63402e540683253b7e3284..1a38fbffb797088ff3debe119893411f1615735c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -244,6 +244,12 @@ public class PurpurConfig { diff --git a/patches/unapplied-server/0081-Stop-squids-floating-on-top-of-water.patch b/patches/server/0079-Stop-squids-floating-on-top-of-water.patch similarity index 84% rename from patches/unapplied-server/0081-Stop-squids-floating-on-top-of-water.patch rename to patches/server/0079-Stop-squids-floating-on-top-of-water.patch index 1a87f1d97..2d71cdacd 100644 --- a/patches/unapplied-server/0081-Stop-squids-floating-on-top-of-water.patch +++ b/patches/server/0079-Stop-squids-floating-on-top-of-water.patch @@ -5,11 +5,11 @@ Subject: [PATCH] Stop squids floating on top of water diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 6734cc459682328c7bfe8714a190a5765165e17b..44e20e9921f89238088458ba4c22c0997aae899b 100644 +index b0c65f5a6cf79f22603d3dd93fffac435686b41c..368af5e31919ad5a648315d9d848511a791cc5bb 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -4516,6 +4516,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess - this.yRotO = this.getYRot(); +@@ -4216,6 +4216,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess + return Mth.lerp(delta, this.yRotO, this.yRot); } + // Purpur start @@ -22,10 +22,10 @@ index 6734cc459682328c7bfe8714a190a5765165e17b..44e20e9921f89238088458ba4c22c099 if (this.touchingUnloadedChunk()) { return false; diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java -index e38416189d9dc72f0b5951a1f6430dbc4578c422..c562eeb5e865a57fbc595de47c5d4e2b90430026 100644 +index eb85356f0e2d1dc2eeecb30a36f88df900eb5caa..df071be3179898b77ba82ce8697da18196f16ad8 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java -@@ -73,6 +73,12 @@ public class Squid extends WaterAnimal { +@@ -72,6 +72,12 @@ public class Squid extends WaterAnimal { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.squidMaxHealth); } @@ -39,10 +39,10 @@ index e38416189d9dc72f0b5951a1f6430dbc4578c422..c562eeb5e865a57fbc595de47c5d4e2b protected void registerGoals() { this.goalSelector.addGoal(0, new Squid.SquidRandomMovementGoal(this)); diff --git a/src/main/java/net/minecraft/world/phys/AABB.java b/src/main/java/net/minecraft/world/phys/AABB.java -index 92394960fc76886f393cba02ac33c57739a4b383..494808b7bc2fb296b78e229ce138a937b7ac2c59 100644 +index c8f7c43134e7c51ce8af5b3c1a28c11db67715a2..5b98889715bf62eb4f15c0b45ada2c701491d324 100644 --- a/src/main/java/net/minecraft/world/phys/AABB.java +++ b/src/main/java/net/minecraft/world/phys/AABB.java -@@ -502,4 +502,10 @@ public class AABB { +@@ -508,4 +508,10 @@ public class AABB { public static AABB ofSize(Vec3 center, double dx, double dy, double dz) { return new AABB(center.x - dx / 2.0, center.y - dy / 2.0, center.z - dz / 2.0, center.x + dx / 2.0, center.y + dy / 2.0, center.z + dz / 2.0); } @@ -54,7 +54,7 @@ index 92394960fc76886f393cba02ac33c57739a4b383..494808b7bc2fb296b78e229ce138a937 + // Purpur } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index dff99dafb0869106fc8f70ee583ba8e269e07777..0ca54a08809ff058912a82e3a8e611cbfe61b682 100644 +index 5ff9c2977b4efd67743b898219ba0a68bfb92dd8..83e5f4437e88d56060db2278e8fa2dbba5256d64 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1500,6 +1500,7 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied-server/0082-Crying-obsidian-valid-for-portal-frames.patch b/patches/server/0080-Crying-obsidian-valid-for-portal-frames.patch similarity index 90% rename from patches/unapplied-server/0082-Crying-obsidian-valid-for-portal-frames.patch rename to patches/server/0080-Crying-obsidian-valid-for-portal-frames.patch index f67874c24..e1944bc4b 100644 --- a/patches/unapplied-server/0082-Crying-obsidian-valid-for-portal-frames.patch +++ b/patches/server/0080-Crying-obsidian-valid-for-portal-frames.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Crying obsidian valid for portal frames diff --git a/src/main/java/net/minecraft/world/level/portal/PortalShape.java b/src/main/java/net/minecraft/world/level/portal/PortalShape.java -index af24467ee37cfc06f692b3b02e68f6cfbaaa8d59..afe6b2170846273b41b694aa53dca4c31bf78b3f 100644 +index 57139a0b8adcd1ea25cd100be78402681856ee75..e8793e11e94eea41ea9be615f0d46c7add836919 100644 --- a/src/main/java/net/minecraft/world/level/portal/PortalShape.java +++ b/src/main/java/net/minecraft/world/level/portal/PortalShape.java -@@ -33,7 +33,7 @@ public class PortalShape { +@@ -32,7 +32,7 @@ public class PortalShape { private static final int MIN_HEIGHT = 3; public static final int MAX_HEIGHT = 21; private static final BlockBehaviour.StatePredicate FRAME = (iblockdata, iblockaccess, blockposition) -> { @@ -18,7 +18,7 @@ index af24467ee37cfc06f692b3b02e68f6cfbaaa8d59..afe6b2170846273b41b694aa53dca4c3 private static final float SAFE_TRAVEL_MAX_ENTITY_XY = 4.0F; private static final double SAFE_TRAVEL_MAX_VERTICAL_DELTA = 1.0D; diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 68b19f66b38ffecfa05aaa7ec1187fb0967ebd57..2f68cf2fc064a38ca059504a39d563d95d01643e 100644 +index 1a38fbffb797088ff3debe119893411f1615735c..b1dec36f0446773b066a4f08cc4045c312f64259 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -212,6 +212,7 @@ public class PurpurConfig { diff --git a/patches/unapplied-server/0084-LivingEntity-broadcastItemBreak.patch b/patches/server/0081-LivingEntity-broadcastItemBreak.patch similarity index 85% rename from patches/unapplied-server/0084-LivingEntity-broadcastItemBreak.patch rename to patches/server/0081-LivingEntity-broadcastItemBreak.patch index ff56ca547..1e339efeb 100644 --- a/patches/unapplied-server/0084-LivingEntity-broadcastItemBreak.patch +++ b/patches/server/0081-LivingEntity-broadcastItemBreak.patch @@ -5,10 +5,10 @@ Subject: [PATCH] LivingEntity#broadcastItemBreak diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 18af8736f30780b48313257a09973e30df6d0e2f..f234cc33ad0e1f308daef6a09e1755bc23497294 100644 +index a1e715629313346f670bce92483996122b0f1d7b..386647f6000c71c59ab8d7875219eefdc5a3d7ef 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -1180,4 +1180,12 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -1181,4 +1181,12 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { this.getHandle().setYBodyRot(bodyYaw); } // Paper end - body yaw API diff --git a/patches/unapplied-server/0085-Customizable-wither-health-and-healing.patch b/patches/server/0082-Customizable-wither-health-and-healing.patch similarity index 89% rename from patches/unapplied-server/0085-Customizable-wither-health-and-healing.patch rename to patches/server/0082-Customizable-wither-health-and-healing.patch index e6e2a15bc..3b4b499fc 100644 --- a/patches/unapplied-server/0085-Customizable-wither-health-and-healing.patch +++ b/patches/server/0082-Customizable-wither-health-and-healing.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Customizable wither health and healing Adds the ability to customize the health of the wither, as well as the amount that it heals, and how often. diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -index 0cc32342cf6c65466dd1e45f9097ca89b01036e4..8d2894bb1ae70f63c8fa67de3e9f7c6a9c940f3e 100644 +index c4894f62a2c3d84d063e5caa5a38df80575660cb..8f1458d250bb875396c6318a7abc520f3563b8ef 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 @@ -520,8 +520,10 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @@ -23,10 +23,10 @@ index 0cc32342cf6c65466dd1e45f9097ca89b01036e4..8d2894bb1ae70f63c8fa67de3e9f7c6a this.bossEvent.setProgress(this.getHealth() / this.getMaxHealth()); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7d08647a6eaf217b3c4504b0953ba1f824104359..ccd5741f4fb91874fdca7c49b9c4c90eefc3b1b1 100644 +index 83e5f4437e88d56060db2278e8fa2dbba5256d64..349129c09abb8d33b02753fe85412bf7b2ad3d72 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1739,6 +1739,8 @@ public class PurpurWorldConfig { +@@ -1733,6 +1733,8 @@ public class PurpurWorldConfig { public boolean witherControllable = true; public double witherMaxY = 320D; public double witherMaxHealth = 300.0D; @@ -35,7 +35,7 @@ index 7d08647a6eaf217b3c4504b0953ba1f824104359..ccd5741f4fb91874fdca7c49b9c4c90e private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -1754,6 +1756,8 @@ public class PurpurWorldConfig { +@@ -1748,6 +1750,8 @@ public class PurpurWorldConfig { set("mobs.wither.attributes.max_health", oldValue); } witherMaxHealth = getDouble("mobs.wither.attributes.max_health", witherMaxHealth); diff --git a/patches/unapplied-server/0086-Allow-toggling-special-MobSpawners-per-world.patch b/patches/server/0083-Allow-toggling-special-MobSpawners-per-world.patch similarity index 94% rename from patches/unapplied-server/0086-Allow-toggling-special-MobSpawners-per-world.patch rename to patches/server/0083-Allow-toggling-special-MobSpawners-per-world.patch index a123bfffa..b46f61323 100644 --- a/patches/unapplied-server/0086-Allow-toggling-special-MobSpawners-per-world.patch +++ b/patches/server/0083-Allow-toggling-special-MobSpawners-per-world.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Allow toggling special MobSpawners per world In vanilla, these are all hardcoded on for world type 0 (overworld) and hardcoded off for every other world type. Default config behaviour matches this. diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index b02d9db8442b209a9df27e417be71b11d426878b..1c74802577e056b9023dcc2cbec5885d02fe2c92 100644 +index 521b4b0a767e06db540dc73ff5c8b114813d3168..eb96049b6a788b7164ea9bb5ec9ad70bc19e6976 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -714,7 +714,24 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -363,7 +363,24 @@ public class ServerLevel extends Level implements WorldGenLevel { this.dragonParts = new Int2ObjectOpenHashMap(); this.tickTime = flag1; this.server = minecraftserver; @@ -59,7 +59,7 @@ index c72b6ea5530e54fc373c701028e1c147cea34b59..96e9fce5f9084737d2fcf4deb8330573 if (spawnplacementtype.isSpawnPositionOk(world, blockposition2, EntityType.WANDERING_TRADER)) { blockposition1 = blockposition2; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index beea39d7cdbca783de7248a5c40ea2c7ab02e5b5..ce5db64c233bac3800a715e66aada4740bdad95b 100644 +index 349129c09abb8d33b02753fe85412bf7b2ad3d72..41f29a0b6aaa76f2a1d4f269849f442f89cec6ac 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -69,6 +69,12 @@ public class PurpurWorldConfig { @@ -75,7 +75,7 @@ index beea39d7cdbca783de7248a5c40ea2c7ab02e5b5..ce5db64c233bac3800a715e66aada474 private double getDouble(String path, double def) { PurpurConfig.config.addDefault("world-settings.default." + path, def); return PurpurConfig.config.getDouble("world-settings." + worldName + "." + path, PurpurConfig.config.getDouble("world-settings.default." + path)); -@@ -237,6 +243,21 @@ public class PurpurWorldConfig { +@@ -235,6 +241,21 @@ public class PurpurWorldConfig { } } diff --git a/patches/unapplied-server/0087-Raid-cooldown-setting.patch b/patches/server/0084-Raid-cooldown-setting.patch similarity index 95% rename from patches/unapplied-server/0087-Raid-cooldown-setting.patch rename to patches/server/0084-Raid-cooldown-setting.patch index 439cbff14..20857746f 100644 --- a/patches/unapplied-server/0087-Raid-cooldown-setting.patch +++ b/patches/server/0084-Raid-cooldown-setting.patch @@ -49,10 +49,10 @@ index 8c60f71270d909c10e6617eb64b8fdb42deb73e9..eedce2a3d67d875d5174ee125e267948 if (!raid.isStarted() && !this.raidMap.containsKey(raid.getId())) { this.raidMap.put(raid.getId(), raid); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ce5db64c233bac3800a715e66aada4740bdad95b..9654023afbb0569d5d814368b93b74dedda905a4 100644 +index 41f29a0b6aaa76f2a1d4f269849f442f89cec6ac..44ade9073446e80685bf264571a3922fbab5fb08 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -109,6 +109,7 @@ public class PurpurWorldConfig { +@@ -108,6 +108,7 @@ public class PurpurWorldConfig { public double tridentLoyaltyVoidReturnHeight = 0.0D; public double voidDamageHeight = -64.0D; public double voidDamageDealt = 4.0D; @@ -60,7 +60,7 @@ index ce5db64c233bac3800a715e66aada4740bdad95b..9654023afbb0569d5d814368b93b74de private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); -@@ -118,6 +119,7 @@ public class PurpurWorldConfig { +@@ -116,6 +117,7 @@ public class PurpurWorldConfig { 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); diff --git a/patches/unapplied-server/0088-Despawn-rate-config-options-per-projectile-type.patch b/patches/server/0085-Despawn-rate-config-options-per-projectile-type.patch similarity index 94% rename from patches/unapplied-server/0088-Despawn-rate-config-options-per-projectile-type.patch rename to patches/server/0085-Despawn-rate-config-options-per-projectile-type.patch index b197ba556..40da9e53a 100644 --- a/patches/unapplied-server/0088-Despawn-rate-config-options-per-projectile-type.patch +++ b/patches/server/0085-Despawn-rate-config-options-per-projectile-type.patch @@ -7,10 +7,10 @@ This patch's implementation has been removed in favor of Pufferfish's entity-tim The config remains for migration purposes. diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9654023afbb0569d5d814368b93b74dedda905a4..8a577d78d63adc799de71f96b45320372c346552 100644 +index 44ade9073446e80685bf264571a3922fbab5fb08..91c45e6da2ddd7547144f35f38cdfa2b3e1cc3fc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -318,6 +318,40 @@ public class PurpurWorldConfig { +@@ -316,6 +316,40 @@ public class PurpurWorldConfig { }); } diff --git a/patches/unapplied-server/0089-Add-option-to-disable-zombie-aggressiveness-towards-.patch b/patches/server/0086-Add-option-to-disable-zombie-aggressiveness-towards-.patch similarity index 94% rename from patches/unapplied-server/0089-Add-option-to-disable-zombie-aggressiveness-towards-.patch rename to patches/server/0086-Add-option-to-disable-zombie-aggressiveness-towards-.patch index 1ba1b31b8..b1a84c86e 100644 --- a/patches/unapplied-server/0089-Add-option-to-disable-zombie-aggressiveness-towards-.patch +++ b/patches/server/0086-Add-option-to-disable-zombie-aggressiveness-towards-.patch @@ -45,10 +45,10 @@ index 1d283484be270497859e23e3bb4ab38c09af23e6..b02cdbaa0455319b1e8a7e777e64ff4a this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Axolotl.class, true, false)); this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, true, false, Turtle.BABY_ON_LAND_SELECTOR)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index 555b86925b8d848fad40a838dd98607db8741e3b..3d42b2ea26217243dba96174ff0eadbcdd81a6cd 100644 +index 43c48bb14957b93ee3b0191360c09f710bc008e0..b39d8ee4c6e9483a15991be3b1440384708aee65 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -@@ -154,7 +154,19 @@ public class Zombie extends Monster { +@@ -158,7 +158,19 @@ public class Zombie extends Monster { this.goalSelector.addGoal(7, new WaterAvoidingRandomStrollGoal(this, 1.0D)); this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, new Class[0])).setAlertOthers(ZombifiedPiglin.class)); this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); @@ -70,10 +70,10 @@ index 555b86925b8d848fad40a838dd98607db8741e3b..3d42b2ea26217243dba96174ff0eadbc this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, true, false, Turtle.BABY_ON_LAND_SELECTOR)); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 047f702ee2600036ac0478eb24fbbe6ba426f5c2..88a4e38445dda48e9f9bcc3c9be6ca9fb5ff5760 100644 +index 91c45e6da2ddd7547144f35f38cdfa2b3e1cc3fc..e1b809b493dddb6656903c10dd5e7d63037431c7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1873,6 +1873,7 @@ public class PurpurWorldConfig { +@@ -1867,6 +1867,7 @@ public class PurpurWorldConfig { public boolean zombieJockeyOnlyBaby = true; public double zombieJockeyChance = 0.05D; public boolean zombieJockeyTryExistingChickens = true; @@ -81,7 +81,7 @@ index 047f702ee2600036ac0478eb24fbbe6ba426f5c2..88a4e38445dda48e9f9bcc3c9be6ca9f private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -1887,6 +1888,7 @@ public class PurpurWorldConfig { +@@ -1881,6 +1882,7 @@ public class PurpurWorldConfig { zombieJockeyOnlyBaby = getBoolean("mobs.zombie.jockey.only-babies", zombieJockeyOnlyBaby); zombieJockeyChance = getDouble("mobs.zombie.jockey.chance", zombieJockeyChance); zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens); diff --git a/patches/unapplied-server/0090-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch b/patches/server/0087-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch similarity index 100% rename from patches/unapplied-server/0090-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch rename to patches/server/0087-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch diff --git a/patches/unapplied-server/0091-Flying-squids-Oh-my.patch b/patches/server/0088-Flying-squids-Oh-my.patch similarity index 89% rename from patches/unapplied-server/0091-Flying-squids-Oh-my.patch rename to patches/server/0088-Flying-squids-Oh-my.patch index ca26d5b52..ba318a947 100644 --- a/patches/unapplied-server/0091-Flying-squids-Oh-my.patch +++ b/patches/server/0088-Flying-squids-Oh-my.patch @@ -21,10 +21,10 @@ index 8211c152e6f4232e82e452b08047e4579465d770..4cd57672c548950cb4e0aa97af75ecca protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java -index c562eeb5e865a57fbc595de47c5d4e2b90430026..f0261117a4f8ae240b3b991053deaf8d6419b5b4 100644 +index df071be3179898b77ba82ce8697da18196f16ad8..b4cb9fc3f543b70233fe88a31565252eefdb4ce9 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java -@@ -79,6 +79,15 @@ public class Squid extends WaterAnimal { +@@ -78,6 +78,15 @@ public class Squid extends WaterAnimal { return super.getAxisForFluidCheck().offsetY(level().purpurConfig.squidOffsetWaterCheck); } @@ -40,7 +40,7 @@ index c562eeb5e865a57fbc595de47c5d4e2b90430026..f0261117a4f8ae240b3b991053deaf8d @Override protected void registerGoals() { this.goalSelector.addGoal(0, new Squid.SquidRandomMovementGoal(this)); -@@ -151,6 +160,7 @@ public class Squid extends WaterAnimal { +@@ -150,6 +159,7 @@ public class Squid extends WaterAnimal { } if (this.isInWaterOrBubble()) { @@ -48,7 +48,7 @@ index c562eeb5e865a57fbc595de47c5d4e2b90430026..f0261117a4f8ae240b3b991053deaf8d if (this.tentacleMovement < (float) Math.PI) { float f = this.tentacleMovement / (float) Math.PI; this.tentacleAngle = Mth.sin(f * f * (float) Math.PI) * (float) Math.PI * 0.25F; -@@ -358,7 +368,7 @@ public class Squid extends WaterAnimal { +@@ -357,7 +367,7 @@ public class Squid extends WaterAnimal { int i = this.squid.getNoActionTime(); if (i > 100) { this.squid.setMovementVector(0.0F, 0.0F, 0.0F); @@ -58,10 +58,10 @@ index c562eeb5e865a57fbc595de47c5d4e2b90430026..f0261117a4f8ae240b3b991053deaf8d float g = Mth.cos(f) * 0.2F; float h = -0.1F + this.squid.getRandom().nextFloat() * 0.2F; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 88a4e38445dda48e9f9bcc3c9be6ca9fb5ff5760..935bf96285bd7927f0b2294c7731a865a54e4585 100644 +index e1b809b493dddb6656903c10dd5e7d63037431c7..50e368eeaf0d34320a529fedc7ca6038b00c97bf 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -925,10 +925,12 @@ public class PurpurWorldConfig { +@@ -923,10 +923,12 @@ public class PurpurWorldConfig { public boolean glowSquidRidable = false; public boolean glowSquidControllable = true; public double glowSquidMaxHealth = 10.0D; @@ -74,7 +74,7 @@ index 88a4e38445dda48e9f9bcc3c9be6ca9fb5ff5760..935bf96285bd7927f0b2294c7731a865 } public boolean goatRidable = false; -@@ -1560,6 +1562,7 @@ public class PurpurWorldConfig { +@@ -1558,6 +1560,7 @@ public class PurpurWorldConfig { public double squidMaxHealth = 10.0D; public boolean squidImmuneToEAR = true; public double squidOffsetWaterCheck = 0.0D; @@ -82,7 +82,7 @@ index 88a4e38445dda48e9f9bcc3c9be6ca9fb5ff5760..935bf96285bd7927f0b2294c7731a865 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1571,6 +1574,7 @@ public class PurpurWorldConfig { +@@ -1569,6 +1572,7 @@ public class PurpurWorldConfig { squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); diff --git a/patches/unapplied-server/0093-Configurable-daylight-cycle.patch b/patches/server/0089-Configurable-daylight-cycle.patch similarity index 81% rename from patches/unapplied-server/0093-Configurable-daylight-cycle.patch rename to patches/server/0089-Configurable-daylight-cycle.patch index 713f5e8ef..ecf1352a2 100644 --- a/patches/unapplied-server/0093-Configurable-daylight-cycle.patch +++ b/patches/server/0089-Configurable-daylight-cycle.patch @@ -18,10 +18,10 @@ index 76ef195a5074006b009acd9cc1744667c6aecbb9..659577549e132754281df76a7a1bfd88 public ClientboundSetTimePacket(long time, long timeOfDay, boolean doDaylightCycle) { this.gameTime = time; diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index e8ebbbaa43dc8e3b63b2a90c0934207441e595f5..6ebc9327f74344245886144a4075836205cc1533 100644 +index 0ce81b0d621d2914903c4325f2e602a246544890..ea2ca2e724cfe061ca356a1bdb0c579d8ba18176 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1750,7 +1750,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop recipe, NonNullList slots, int count) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d2ab4fe9ccb19f837a41bddddf29cfcc96fc3f96..163d2cfaeaa301c34f04ed13d8ff881ecb868224 100644 +index c35776bd050820795edaed0cf9aa86cbfe1aed60..aa6f4a02b9559fe1d60df0d57cdf72423fc12b76 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -410,6 +410,17 @@ public class PurpurWorldConfig { +@@ -397,6 +397,17 @@ public class PurpurWorldConfig { farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); } diff --git a/patches/unapplied-server/0096-Arrows-should-not-reset-despawn-counter.patch b/patches/server/0091-Arrows-should-not-reset-despawn-counter.patch similarity index 88% rename from patches/unapplied-server/0096-Arrows-should-not-reset-despawn-counter.patch rename to patches/server/0091-Arrows-should-not-reset-despawn-counter.patch index 6fe03557a..741dee159 100644 --- a/patches/unapplied-server/0096-Arrows-should-not-reset-despawn-counter.patch +++ b/patches/server/0091-Arrows-should-not-reset-despawn-counter.patch @@ -7,10 +7,10 @@ This prevents keeping arrows alive indefinitely (such as when the block the arrow is stuck in gets removed, like a piston head going up/down) diff --git a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java -index 31b8a8bf78d52b5f11b68e780ec09bf78e7bda84..342eaa0e3b053e9b39dc58fa92cd18cac446a844 100644 +index 0bf0e1586c80076a41b9f75b5e59e806b91bf825..4d8860c862a355969ec801c6a2a0abb95aabbfa6 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java +++ b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java -@@ -332,7 +332,7 @@ public abstract class AbstractArrow extends Projectile { +@@ -356,7 +356,7 @@ public abstract class AbstractArrow extends Projectile { Vec3 vec3d = this.getDeltaMovement(); this.setDeltaMovement(vec3d.multiply((double) (this.random.nextFloat() * 0.2F), (double) (this.random.nextFloat() * 0.2F), (double) (this.random.nextFloat() * 0.2F))); @@ -20,7 +20,7 @@ index 31b8a8bf78d52b5f11b68e780ec09bf78e7bda84..342eaa0e3b053e9b39dc58fa92cd18ca @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 163d2cfaeaa301c34f04ed13d8ff881ecb868224..5a49ea28eb227c6d550f3d7e589fb1e98fa2d285 100644 +index aa6f4a02b9559fe1d60df0d57cdf72423fc12b76..a8fbd9f4491076ae51a10b60047c28feac4e2ad3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -101,6 +101,11 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied-server/0097-Ability-to-re-add-farmland-mechanics-from-Alpha.patch b/patches/server/0092-Ability-to-re-add-farmland-mechanics-from-Alpha.patch similarity index 92% rename from patches/unapplied-server/0097-Ability-to-re-add-farmland-mechanics-from-Alpha.patch rename to patches/server/0092-Ability-to-re-add-farmland-mechanics-from-Alpha.patch index a10dc92f4..8383d4d2e 100644 --- a/patches/unapplied-server/0097-Ability-to-re-add-farmland-mechanics-from-Alpha.patch +++ b/patches/server/0092-Ability-to-re-add-farmland-mechanics-from-Alpha.patch @@ -24,10 +24,10 @@ index da85fabd75e9bd5ebece7127ef5b512df16fe3ac..dc356bd0931af9bdab9ec71e3de66e88 return; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5a49ea28eb227c6d550f3d7e589fb1e98fa2d285..543c7679cf1ac50ff103be3366421d4faa542319 100644 +index a8fbd9f4491076ae51a10b60047c28feac4e2ad3..54d4ee904372e2b5f3cc288e1c1438922ef082b4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -411,8 +411,10 @@ public class PurpurWorldConfig { +@@ -398,8 +398,10 @@ public class PurpurWorldConfig { } public boolean farmlandGetsMoistFromBelow = false; diff --git a/patches/unapplied-server/0098-Add-adjustable-breeding-cooldown-to-config.patch b/patches/server/0093-Add-adjustable-breeding-cooldown-to-config.patch similarity index 93% rename from patches/unapplied-server/0098-Add-adjustable-breeding-cooldown-to-config.patch rename to patches/server/0093-Add-adjustable-breeding-cooldown-to-config.patch index dcc9157b3..7c5cd0413 100644 --- a/patches/unapplied-server/0098-Add-adjustable-breeding-cooldown-to-config.patch +++ b/patches/server/0093-Add-adjustable-breeding-cooldown-to-config.patch @@ -5,7 +5,7 @@ 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 5193cf1d3c922d750a11e492b7636215e23ad0d6..b1f0fda942559b6d12c12a77088da6ce4a233963 100644 +index e96fca314bebea5fcdb684d3478af1b6dc5f13cf..5ab29081ab9f5dcf355d1dac2f2a854149ab4699 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Animal.java +++ b/src/main/java/net/minecraft/world/entity/animal/Animal.java @@ -146,7 +146,7 @@ public abstract class Animal extends AgeableMob { @@ -42,10 +42,10 @@ index 5193cf1d3c922d750a11e492b7636215e23ad0d6..b1f0fda942559b6d12c12a77088da6ce 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 a0a0ccd06cf8de4a379d9fbb89865bae8feeedc6..f81a73b0ca751086cb13a9e4fef227356429209b 100644 +index df7ae03f3162c15ef5f5b9647c7d5d6182638257..d77350e75e67eb9a8301a489b5bec3aa7a69ec9c 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -180,6 +180,49 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -174,6 +174,49 @@ public abstract class Level implements LevelAccessor, AutoCloseable { public final Map explosionDensityCache = new HashMap<>(); // Paper - Optimize explosions public java.util.ArrayDeque redstoneUpdateInfos; // Paper - Faster redstone torch rapid clock removal; Move from Map in BlockRedstoneTorch to here @@ -95,7 +95,7 @@ index a0a0ccd06cf8de4a379d9fbb89865bae8feeedc6..f81a73b0ca751086cb13a9e4fef22735 public CraftWorld getWorld() { return this.world; } -@@ -210,6 +253,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -204,6 +247,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 - create paper world config this.purpurConfig = new org.purpurmc.purpur.PurpurWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName(), env); // Purpur @@ -104,10 +104,10 @@ index a0a0ccd06cf8de4a379d9fbb89865bae8feeedc6..f81a73b0ca751086cb13a9e4fef22735 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 543c7679cf1ac50ff103be3366421d4faa542319..37292c309b465fce3b601a3ff8400e58c5a74308 100644 +index 54d4ee904372e2b5f3cc288e1c1438922ef082b4..aad064f27997ad4263de2d3afb162b53d2c891c1 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 { +@@ -114,6 +114,7 @@ public class PurpurWorldConfig { public double voidDamageHeight = -64.0D; public double voidDamageDealt = 4.0D; public int raidCooldownSeconds = 0; @@ -115,7 +115,7 @@ index 543c7679cf1ac50ff103be3366421d4faa542319..37292c309b465fce3b601a3ff8400e58 private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); -@@ -125,6 +126,7 @@ public class PurpurWorldConfig { +@@ -123,6 +124,7 @@ public class PurpurWorldConfig { voidDamageHeight = getDouble("gameplay-mechanics.void-damage-height", voidDamageHeight); voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds); diff --git a/patches/unapplied-server/0099-Make-entity-breeding-times-configurable.patch b/patches/server/0094-Make-entity-breeding-times-configurable.patch similarity index 88% rename from patches/unapplied-server/0099-Make-entity-breeding-times-configurable.patch rename to patches/server/0094-Make-entity-breeding-times-configurable.patch index 167cfa681..30956457f 100644 --- a/patches/unapplied-server/0099-Make-entity-breeding-times-configurable.patch +++ b/patches/server/0094-Make-entity-breeding-times-configurable.patch @@ -22,7 +22,7 @@ index 0a608418f87b71d5d71706712e1f82da0d7e4d34..03e7ca83e4c28dfaa5b52bcb100bd542 // 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 b1f0fda942559b6d12c12a77088da6ce4a233963..7f90a0d8f65c96844df06b7c4fa3da28a6f51dd1 100644 +index 5ab29081ab9f5dcf355d1dac2f2a854149ab4699..27250278968233b3de05c365ae304a4121887160 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 { @@ -47,10 +47,10 @@ index b1f0fda942559b6d12c12a77088da6ce4a233963..7f90a0d8f65c96844df06b7c4fa3da28 entityanimal.resetLove(); worldserver.broadcastEntityEvent(this, (byte) 18); diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java -index ae4b53f4cdd78368deb7d510be4936ffefce4d9c..cbcfe8177362d9b8af97f21e716a4dce9e227465 100644 +index 3a7e413ba17901ed8e4ef0299555305c62f0d303..a758f360741de84a004ecc55f1415e74bd0a0fd5 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java -@@ -472,6 +472,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -483,6 +483,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.beeMaxHealth); } @@ -63,10 +63,10 @@ index ae4b53f4cdd78368deb7d510be4936ffefce4d9c..cbcfe8177362d9b8af97f21e716a4dce 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 7930e9735abf8357df737798e80b08295c2e06ec..b23d6683bab3d257febb57a6c9c8be4db926af7f 100644 +index 5d89b2c9bd6ee2d0d5176c93988b97ff2e913e83..e1f8fff9b67ad3c74afc69f2fba8919ffa1800e6 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cat.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java -@@ -134,6 +134,11 @@ public class Cat extends TamableAnimal implements VariantHolder { @@ -156,7 +156,7 @@ index 41b52f128fbc174939a7f2d1cd937ab19432de25..22a2328fe5159c8fed635a62334a3f10 public float getWalkTargetValue(BlockPos pos, LevelReader world) { return world.getBlockState(pos.below()).is(Blocks.MYCELIUM) ? 10.0F : world.getPathfindingCostFromLightLevels(pos); diff --git a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java -index 31f3982359a00f55a7fc053becc4043dcf423c50..fc74c21d2c506df2134fc4ce61917af65fa89466 100644 +index 0ef3fee057d7dd0b5d9d4a38953617bac3f49c7b..14d94992bc02c0eedab0c83fcffb975ac33d48cb 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java @@ -88,6 +88,11 @@ public class Ocelot extends Animal { @@ -172,10 +172,10 @@ index 31f3982359a00f55a7fc053becc4043dcf423c50..fc74c21d2c506df2134fc4ce61917af6 return (Boolean) this.entityData.get(Ocelot.DATA_TRUSTING); } diff --git a/src/main/java/net/minecraft/world/entity/animal/Panda.java b/src/main/java/net/minecraft/world/entity/animal/Panda.java -index d2410da0b453e0128ff8b00956cae89cabff1d5d..e90fc016fc7e0e9aac2c2d0cf081748100f225f3 100644 +index 0fd0358d287604d0ff1f52f0c71633586d100e3e..925bed4503a4023c01d8b9ffd07047831e5e96e5 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Panda.java +++ b/src/main/java/net/minecraft/world/entity/animal/Panda.java -@@ -152,6 +152,11 @@ public class Panda extends Animal { +@@ -153,6 +153,11 @@ public class Panda extends Animal { setAttributes(); } @@ -186,9 +186,9 @@ index d2410da0b453e0128ff8b00956cae89cabff1d5d..e90fc016fc7e0e9aac2c2d0cf0817481 + @Override public boolean canTakeItem(ItemStack stack) { - EquipmentSlot enumitemslot = Mob.getEquipmentSlotForItem(stack); + EquipmentSlot enumitemslot = this.getEquipmentSlotForItem(stack); 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 04507e05b499e536faa3c55179bb91913f7cda81..22b8701accc76d806819433a8511172e13a9ed9e 100644 +index 17983481386709110b7c4749ec8432866454492d..d2cdb2d14dc8fe3cf6ffb14668f848e5dd020827 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java @@ -191,6 +191,11 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder { +@@ -145,6 +145,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 4abcde662ed78b16632ee575f695ee4329f11b2f..b5297b1d7223af622636a7defdb98b5b @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 b68886cc72d3055e7745fe4a955192bbad90dc13..c3cc949291d11ae707fa5175d666df2ee81cdcce 100644 +index 90dff2e658e8b77d37952080d389e1f2db47264f..7d716efe614902c35ae63b49e159e8d2d8e7d8ea 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 { +@@ -137,6 +137,11 @@ public class Sheep extends Animal implements Shearable { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.sheepMaxHealth); } @@ -268,7 +268,7 @@ index b68886cc72d3055e7745fe4a955192bbad90dc13..c3cc949291d11ae707fa5175d666df2e 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 b8dcf3d632c79585ec7e9f50fa040fa9fac5d7c5..a577ec78b2f5bca0166277c499da4fa7988d5395 100644 +index d24697dc1e3cdc5eb61632935e81e25b1e341287..58a390b462ec387f5376559c3d615ed4bcf055ea 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java @@ -109,6 +109,11 @@ public class Turtle extends Animal { @@ -281,13 +281,13 @@ index b8dcf3d632c79585ec7e9f50fa040fa9fac5d7c5..a577ec78b2f5bca0166277c499da4fa7 + } + public void setHomePos(BlockPos pos) { - this.entityData.set(Turtle.HOME_POS, pos.immutable()); // Paper - called with mutablepos... + this.entityData.set(Turtle.HOME_POS, pos); } 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 3235ed40d502722e888656776ba1a218f198f53e..2267f8da1c27ff54b2ced59ef15eb45357b7075d 100644 +index 81ca20878d552d9b674c638dbd8cdebe9e666ec5..e3c0163a4b00dca01b97c41aa57aa998063ec491 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -@@ -151,6 +151,11 @@ public class Wolf extends TamableAnimal implements NeutralMob, 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 07a5599a9370ba167e985006d74caa3c80288e28..ed67fcd2b67bfe581863cc6748692c3348f6c883 100644 +index e0c981cef6992c4a83813c6f77fe11841fe11c1c..260138fcf0191391b68cb9d03cc55e26873bc001 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, Saddl @@ -394,10 +394,10 @@ index b47a72ffb8b947cea5d4bc6ee37b824c4161be31..2990d50fd5209b272e0cfbd5dd633124 protected SoundEvent getAmbientSound() { return SoundEvents.DONKEY_AMBIENT; diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java b/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java -index 9ad0d3972d1970b11687da174a83e3a0a4180c0e..16d4278d49dad84f72c968ca36914e93d46dc5f6 100644 +index 273365b9bca6e26760f45a794c1ebef1f9118c43..c4b22c52e335080e744a723622f455c0d8cf73e2 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java -@@ -66,6 +66,11 @@ public class Horse extends AbstractHorse implements VariantHolder { +@@ -67,6 +67,11 @@ public class Horse extends AbstractHorse implements VariantHolder { return generateSpeed(this.level().purpurConfig.horseMovementSpeedMin, this.level().purpurConfig.horseMovementSpeedMax); } @@ -410,7 +410,7 @@ index 9ad0d3972d1970b11687da174a83e3a0a4180c0e..16d4278d49dad84f72c968ca36914e93 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 9ed11bf6420e4ea8ea78cec641a7e37327301ae1..326d94eabe0a469bfebed4517960be0042517249 100644 +index 09c400ce06003139de84e22313354ed6199da761..b8a6ebd8301c4873060505c866dabb4e8772d5b5 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java @@ -141,6 +141,11 @@ public class Llama extends AbstractChestedHorse implements VariantHolder Block.popResource(this.level(), this.blockPosition(), stack))); // CraftBukkit - add to drops // Paper - Restore vanilla drops behavior - return this.brokenByAnything(damageSource); // Paper + return this.brokenByAnything(world, damageSource); // Paper diff --git a/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java b/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java -index da0d1c9a1c4ae081bff9ca4230c9a1503885c354..9af8fcf6abb9b768829592bc1b091ebe4599ed2e 100644 +index 5b7245cd99593ee90e17c97e0104f3aba9ae05ea..cf78531b193ba56991ccb0c4f62844208e4a5706 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java +++ b/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java -@@ -262,7 +262,13 @@ public class ItemFrame extends HangingEntity { +@@ -227,7 +227,13 @@ public class ItemFrame extends HangingEntity { } if (alwaysDrop) { @@ -37,14 +37,14 @@ index da0d1c9a1c4ae081bff9ca4230c9a1503885c354..9af8fcf6abb9b768829592bc1b091ebe if (!itemstack.isEmpty()) { diff --git a/src/main/java/net/minecraft/world/entity/decoration/Painting.java b/src/main/java/net/minecraft/world/entity/decoration/Painting.java -index 40e7112669abb58a0ab6df1846afec3979e95e55..183464f202d4c2774840edfde1dfcab44d05d0d3 100644 +index e86fdf5d6853b7bddfe19d6e5d41d3dec0c25f23..f45567aa7695da68f92809a6c208eb515c2f838a 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/Painting.java +++ b/src/main/java/net/minecraft/world/entity/decoration/Painting.java -@@ -151,7 +151,13 @@ public class Painting extends HangingEntity implements VariantHolder { +@@ -1017,7 +1017,13 @@ public class Boat extends VehicleEntity implements Leashable, VariantHolder